如何排序多个文件? Unix的

时间:2013-03-11 12:59:12

标签: linux bash shell unix sorting

通常我可以这样做来排序文本文件:

cat infile.txt | sort > outfile.out
mv outfile.out > infile.txt

我也可以循环播放:

for inp in ./*; do
    fname=${inp##*/}
    cat "$inp" | sort  > ./"$fname".out
done

除了写一个循环之外,还有一个单行程序可以为终端中的所有文件执行上述操作吗?

2 个答案:

答案 0 :(得分:4)

这让我感到很荒谬,因为循环没什么问题,但是你可以做到:

ls | xargs -n 1 sh -c 'sort $1 > $1.tmp; mv $1.tmp $1' sh

答案 1 :(得分:3)

使用GNU sort即可:

$ sort file -o file 

您可以使用xargs代替循环:

$ ls | xargs -i% -n1 sort % -o % 

如果您没有-o选项:

$ sort file > tmp && mv tmp file 

$ ls | xargs -i% -n1 sort % > tmp && mv tmp %