通常我可以这样做来对文本文件进行排序:
cat infile.txt | sort > outfile.out
mv outfile.out > infile.txt
我也可以循环执行:
for inp in ./*; do
fname=${inp##*/}
cat "$inp" | sort > ./"$fname".out
done
除了编写一个循环之外,是否有一种方法可以对终端中的所有文件执行上述操作?
这让我觉得这是一个荒谬的练习,因为循环没有任何问题,但你可以这样做:
ls | xargs -n 1 sh -c 'sort $1 > $1.tmp; mv $1.tmp $1' sh
与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 %