Linux 如何对多个文件进行排序?Unix

Linux 如何对多个文件进行排序?Unix,linux,bash,shell,unix,sorting,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 除了编写循环,终端中的所有文件是否都有一行程序来执行上述操作?使用GNU sort可以执行以下操作: $ sort file

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

cat infile.txt | sort > outfile.out
mv outfile.out > infile.txt
我也可以循环进行:

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

除了编写循环,终端中的所有文件是否都有一行程序来执行上述操作?

使用
GNU sort
可以执行以下操作:

$ sort file -o file 
ls | xargs -n 1 sh -c 'sort $1 > $1.tmp; mv $1.tmp $1' sh
您可以使用
xargs
而不是像以下那样循环:

$ ls | xargs -i% -n1 sort % -o % 
如果您没有
-o
选项:

$ sort file > tmp && mv tmp file 

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

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

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

为什么UOOC比避免循环更好?猫是有毛病的。这个问题怎么会“离题”?程序员/系统管理员的血液里充满了荒谬。