繁体   English   中英

如何根据ubuntu中的内容删除多个文件

[英]how to delete multiple files according to the content in ubuntu

我想删除所有只包含一行的文件。 列出每个文件中的行数是wc -l *txt 我只知道如何使用rm删除具有特定名称但不包含内容行的文件。

有人可以帮忙吗? 非常感谢!

你可以将wcawk组合成一个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

那这个呢?

for i in `ls -1 $dir`
do
   if [ `wc -l $i` -eq 1 ]; then
        rm $i
   fi
done

对这个问题的任何回答都不会与ubuntu上的这个问题有任何关系。 您可以在Linux / * nix / bsd上使用bash执行此操作,包括cygwin(在Windows上)或Mac终端上。

for i in `ls`; do n1=$(wc $i | awk '{print $1}'); if [ $n1 -eq 1 ]; then rm $i; fi; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM