我想刪除所有隻包含一行的文件。列出每個文件中的行數爲wc -l *txt
。我只知道如何使用rm
刪除具有特定名稱但不包含內容行的文件。如何根據ubuntu中的內容刪除多個文件
任何人都可以幫忙嗎?非常感謝!
我想刪除所有隻包含一行的文件。列出每個文件中的行數爲wc -l *txt
。我只知道如何使用rm
刪除具有特定名稱但不包含內容行的文件。如何根據ubuntu中的內容刪除多個文件
任何人都可以幫忙嗎?非常感謝!
任何回答這個問題不會有任何與此是在Ubuntu。您可以使用bash在Linux/* nix/bsd上執行此操作,包括cygwin(在Windows上)或Mac終端上。
for i in `ls`; do n1=$(wc $i | awk '{print $1}'); if [ $n1 -eq 1 ]; then rm $i; fi; done
這是怎麼回事?
for i in `ls -1 $dir`
do
if [ `wc -l $i` -eq 1 ]; then
rm $i
fi
done
你可以結合wc
和awk
到oneliner
wc -l *.txt|awk '$1==1{print "rm "$2}'
這將打印rm xxx.txt
你。如果要執行它,只是管道輸出到sh
例如:
kent$ wc -l *.txt
1 a.txt
1 b.txt
2 c.txt
2 d.txt
1 e.txt
7 total
kent$ wc -l *.txt|awk '$1==1{print "rm "$2}'
rm a.txt
rm b.txt
rm e.txt
kent$ wc -l *.txt|awk '$1==1{print "rm "$2}'|sh
kent$ l
total 8.0K
-rw-r--r-- 1 kent kent 4 Mar 4 16:41 c.txt
-rw-r--r-- 1 kent kent 4 Mar 4 16:41 d.txt
+1。我很喜歡。 – fedorqui 2013-03-04 15:44:30
是否要從文件中刪除行或刪除文件本身? – hek2mgl 2013-03-04 15:31:59
@ hek2mgl我的意思是刪除文件本身,謝謝! – manxing 2013-03-04 15:33:00
從當前目錄?還是遞歸? – hek2mgl 2013-03-04 15:33:39