답변:
bash
최신 버전 을 사용 하는 경우 다음 globstar
옵션 을 통해 이익을 얻을 수 있습니다 .
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
여기 내가 한 시험이있다
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
"aaa bbb.pdf"파일을 확인하십시오.
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"
공백이 포함 된 파일 이름을 처리 하기 위해 인용 할 필요가 없습니까?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(다른 답변과 비슷하지만 pipe / xargs / mv를 선호합니다 ... 더 직관적입니다)
참고로, 여러 디렉토리와 여러 pdf 파일에서 위의 한 줄 스크립트를 성공적으로 수행했습니다.
-print0
find와 -0
xargs에 args 를 추가하여이를 다소 중재 할 수 있습니다 .
Windows 명령 행 (cmd.exe)의 경우 다음을 사용할 수 있습니다.
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
a/x.pdf
하고b/x.pdf
싶습니까?