백틱은 붙여넣기와 다른 결과를 제공합니다.

백틱은 붙여넣기와 다른 결과를 제공합니다.

GNU bash, 버전 5.0.17(1)-릴리스(x86_64-pc-linux-gnu)
Ubuntu 20.04.3 LTS

그래서 약 20개의 7z 파일을 다운로드했고 해당 파일을 어딘가로 옮기고 싶지만 이미 다운로드에 있는 이전 7z 파일은 옮기고 싶지 않습니다. (그런데 파일 이름에도 공백이 있습니다.) 그래서 저는 정말 좋아합니다.

mv `find -mmin -700 -iname "*.7z" -printf "\"%f\" "` ~/FOLDER/

지난 11시간 동안 수정된 모든 7z 파일을 찾아 ~/FOLDER/로 이동해야 합니다.

모든 파일을 이동하는 대신 다음과 같은 파일 이름 조각으로 인해 많은 오류가 발생했습니다.

mv: cannot stat 'Pinball': No such file or directory

나는 find명령 자체를 시도했고 각각 따옴표로 묶어 한 줄에 합리적으로 보이는 파일 목록을 제공합니다. 또한 백틱이 기본적으로 DID라고 생각했던 것처럼 명령의 출력을 find에 붙여넣으려고 했는데 mv PASTED_HERE ~/FOLDER/제대로 작동했습니다. (나도 $()백틱을 대체하려고 시도했지만 백틱과 동일한 오류가 발생했습니다.) 무엇이 문제인가요?

답변1

따옴표는 파일 이름의 일부가 아니므로 이름에 따옴표를 포함해도 작동할 것으로 기대할 수 없습니다.

find -mmin -700 -iname '*.7z' -exec echo mv -v {} ~/FOLDER/ \;

또는 (GNU 사용 mv),

find -mmin -700 -iname '*.7z' -exec echo mv -vt ~/FOLDER/ {} +

두 경우 모두 echo제안된 결과에 만족하면 삭제하세요.


참고로 백틱은 더 이상 모범 사례로 간주되지 않습니다. 결과를 단일 단어로 처리해야 하는 경우 대신 큰따옴표를 사용할 수 있습니다 ` ... `.$( ... )

관련 정보