2013-03-04 3 views
1

한 줄만 포함하는 모든 파일을 삭제하고 싶습니다. 각 파일의 줄 수를 나열하려면 wc -l *txt입니다. rm을 사용하여 특정 이름의 파일은 삭제하지만 내용은 삭제하지 않는 방법을 알고 있습니다.우분투의 내용에 따라 여러 파일을 삭제하는 방법

아무도 도와 줄 수 있습니까? 많은 감사합니다!

+0

파일에서 해당 줄을 삭제 하시겠습니까, 아니면 파일 자체를 삭제 하시겠습니까? – hek2mgl

+0

@ hek2mgl 나는 그 자체로 파일 자체를 삭제하는 것을 의미한다! – manxing

+0

현재 디렉토리에서? 아니면 재귀? – hek2mgl

답변

1

이 질문에 대한 모든 답은이 우분투에 존재와는 아무 상관이 없습니다. 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 
1

어떨까요?

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

이 당신을 위해 rm xxx.txt를 인쇄 할 것이다 oneliner

wc -l *.txt|awk '$1==1{print "rm "$2}' 

wcawk을 결합 할 수 있습니다. 당신이 그것을 실행하려는 경우, 단지 파이프 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 
+0

+1. 난 정말 좋아. – fedorqui

관련 문제