2010-08-20 1 views

답변

52

이 마치

find /path -type f \(-iname "*.doc" -o -iname "*.pdf" \) 

: 자동 처리를위한 고급 쿼리의 경우, 더 강력한 find 명령을 사용한다 grep 명령에서 정규 표현식을 사용하여 원하는 작업을 수행 할 수 있습니다 (끝 '$'문자는 .doc가 줄의 끝에 있어야 함을 나타내며 'file.doc.txt'는 제외됩니다).

ls -R |grep "\.doc$" 

the man에 정규 표현식과 함께 grep을 사용하는 방법에 대한 추가 정보.

+3

+1, 매일 리눅스에 대해 새로운 것을 배웁니다. –

+1

도트를 이스케이프 처리하는 것이 좋습니다. 그렇지 않으면'hellodoc'과 같은 파일도 일치합니다. 'ls -R | grep "\ .doc $"' – fedorqui

+4

찾을 수있는 파일의 전체 경로를 표시하는 방법이 있습니까? 지금은 모든 파일의 목록 일뿐입니다. 그러나 실제로 어떻게 찾아야할지 모르겠습니다. – Russell

29

ls 명령 출력은 주로 사람이 읽기위한 것입니다. 당신은 "LS"와 "그렙"더 편하지 않으면 당신은 bash는 4.0 ++

#!/bin/bash 
shopt -s globstar 
shopt -s nullglob 
for file in **/*.{pdf,doc} 
do 
    echo "$file" 
done 
+0

** **/* .pdf **/*. doc - 서브 디렉토리없이 서브 디렉토리로 재귀하지 않습니다. – Petesh

+0

실제로 더블 아스테릭스 – ghostdog74

+7

'ls **/*. {pdf, doc}'할 수 있습니다. 또는'**/*. {pdf, doc} '의 파일에 대해서' –

2

사용할 수있는 다른 방법의 일부 :

echo *.{pdf,docx,jpeg}

stat -c %n * | grep 'pdf\|docx\|jpeg'

-1

당신이 (꽤 정규식 제안 등) 와일드 카드 문자 *를 사용하여 선호 유사하게 경우 그냥 ls을 사용할 수 있습니다 -l 플래그를 사용하면 한 줄당 한 파일 (예 : grep)을 나열하고 -R 플래그를 표시 할 수 있습니다. 그런 다음 검색 할 파일을 *.doc I.E.로 지정할 수 있습니다.

ls -l -R *.doc 

또는 적은 수의 줄에 파일을 나열하려는 경우.

ls -R *.doc 
+0

실행 해 보셨습니까? mkdir tmp; cd tmp; mkdir a; 터치 a/a.doc; ls -l -R * .doc –

1
find . | grep "\.doc$" 

이뿐만 아니라 경로를 표시합니다.