作为练习,我应该从我的主目录开始,计算每个文件的行,然后将排序的输出存储在sorted_statistics.txt中,使用查找,wc,cut,cut cut广告排序。我发现此命令工作
find /home/user/ -type f -name "*.c" 2> /dev/null -exec wc -l {} ; | cut -f 1 -d " " | sort -n -o sorted_statistics.txt
,但我不明白为什么
find /home/user/ -type f -name "*.c" 2> /dev/null -exec wc -l {} ; | cut -f 1 -d " " >> sorted_statistics.txt | sort -n sorted_statistics.txt
停在 sort 命令之前。出于好奇,为什么是?
您将所有内容附加到sorted_statistics.txt(消耗所有输出),然后试图将无现有输出在管道中进行排序。我已经更正了您的代码,因此现在可以工作。
find /home/user/ -type f -name "*.c" 2> /dev/null -exec wc -l {} ; | cut -f 1 -d " " >> tmp.txt && sort -n tmp.txt > sorted_statistics.txt
问候!
命令的这一部分没有任何意义:
cut -f 1 -d " " >> sorted_statistics.txt | sort ...
因为 cut 的输出附加到文件 sorted_statistics.txt ,并且根本没有输出均已到 sort 命令。您可能要使用 TEE :
cut -f 1 -d " " | tee -a sorted_statistics.txt | sort ...
TEE 命令将其输入发送到文件,也将其输入发送到标准输出。这就像管道中的TEE交界处。