如何反向列出匹配文件名并将内容追加至OutputFile?
反向排序文件名并追加内容到OutputFile
方法1:使用ls -r反向输出文件名
直接利用ls的-r参数实现反向排序,再传给xargs cat:
ls -r *${USER}*status*.txt | xargs cat >> OutputFile
ls -r会将匹配的文件名按反向字典序输出,刚好对应你需要的vcp-status-500.txt → vcp-status-400.txt → vcp-status-200.txt → vcp-status-000.txt顺序。
方法2:结合sort -r反转排序
如果不想依赖ls,可以通过sort -r手动反转原有排序结果:
echo *${USER}*status*.txt | tr ' ' '\n' | sort -r | tr '\n' ' ' | xargs cat >> OutputFile
步骤拆解:
echo *${USER}*status*.txt:按默认升序输出空格分隔的文件名tr ' ' '\n':将空格替换为换行,让sort能按行处理单个文件名sort -r:对文件名进行反向排序tr '\n' ' ':将换行换回空格,传给xargs cat执行追加操作
方法3:Bash数组倒序循环(更健壮)
如果文件名可能包含空格或特殊字符,推荐用Bash数组处理,避免xargs的潜在问题:
files=(*${USER}*status*.txt) for ((i=${#files[@]}-1; i>=0; i--)); do cat "${files[i]}" >> OutputFile done
- 数组
files会自动按默认升序存储匹配的文件名 - 从数组最后一个元素(索引
${#files[@]}-1)开始倒序循环,逐个将文件内容追加到OutputFile
内容的提问来源于stack exchange,提问作者VCP Muthukrishna
相关产品推荐
相关产品推荐

