通常我可以这样做来排序文本文件:
cat infile.txt | sort > outfile.out
mv outfile.out > infile.txt
我也可以循环播放:
for inp in ./*; do
fname=${inp##*/}
cat "$inp" | sort > ./"$fname".out
done
除了写一个循环之外,还有一个单行程序可以为终端中的所有文件执行上述操作吗?
答案 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 %