![백틱은 붙여넣기와 다른 결과를 제공합니다.](https://linux55.com/image/200447/%EB%B0%B1%ED%8B%B1%EC%9D%80%20%EB%B6%99%EC%97%AC%EB%84%A3%EA%B8%B0%EC%99%80%20%EB%8B%A4%EB%A5%B8%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%A0%9C%EA%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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
제안된 결과에 만족하면 삭제하세요.
참고로 백틱은 더 이상 모범 사례로 간주되지 않습니다. 결과를 단일 단어로 처리해야 하는 경우 대신 큰따옴표를 사용할 수 있습니다 ` ... `
.$( ... )