0

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

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

我也可以循环执行:

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

除了编写一个循环之外,是否有一种方法可以对终端中的所有文件执行上述操作?

4

2 回答 2

5

这让我觉得这是一个荒谬的练习,因为循环没有任何问题,但你可以这样做:

ls | xargs -n 1 sh -c 'sort $1 > $1.tmp; mv $1.tmp $1' sh
于 2013-03-11T13:15:54.077 回答
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 % 
于 2013-03-11T13:01:35.370 回答