mp3
하위 디렉터리(예: 현재 디렉터리)에서 파일을 찾아 복사하려고 합니다 . 내가 시도한 명령은 다음과 같습니다.
find . -name *.mp3 -ls | gawk '{printf("cp %s .\n", $11);}'
이 find
명령은 올바르게 이스케이프된 모든 파일을 나열하지만 gawk
문제가 있는 것 같습니다. 이 find
명령은 예를 들어 다음 파일을 나열합니다.
8132326 7392 -rw-r--r-- 1 alexander alexander 7566180 Nov 27 20:22 ./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3
명령이 문자열 gawk
로 간주되는 동안$11
./For
대신에
./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3
왜 그런 겁니까? 그리고 이를 올바르게 처리하는 방법은 무엇입니까( 가 있든 없든 gawk
)?
답변1
올바른 명령은
find /folder/to/be/searched -type f -name '*.mp3' -exec cp "{}" /target/folder \;
더 간단하므로 오류가 발생할 가능성이 적습니다. 유일한 점은 상대 경로가 아닌 절대 경로를 사용해야 한다는 점입니다.