컴퓨터에서 요세미티를 실행 중입니다. 명령줄을 통해 여러 문서를 다운로드 폴더에서 문서로 이동하려고 합니다.
find . -iname '*.pdf' -exec mv "{}" ./Documents \
주어진 답변은 거의 모든 질문에 대한 답변입니다. 이제 이동된 파일은 어떻게 되는지 궁금합니다. 루트 사용자의 문서 폴더에 있습니까?
답변1
파일을 이동하기 위해 먼저 파일을 찾을 필요는 없습니다. 다음을 수행할 수 있습니다.
mv *.pdf ../Documents
find 사용을 고집하는 경우:
find . -iname '*.pdf' -exec mv {} ../Documents \;
여기서 마지막 "\"는 ";"과 같은 이스케이프 문자입니다. 이렇게 하면 쉘이 정상적으로 작동할 수 있습니다.
답변2
명령은 다음과 같습니다.
find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents \;
백슬래시 뒤의 세미콜론에 유의하세요. 아니면 아래와 같이 하는 것이 더 나을 수도 있습니다.
find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents +
사용된 더하기 기호를 참고하세요.
또는 다음과 같습니다.
find ~/Downloads -iname *.pdf -exec mv {} ~/Documents +
주변의 작은 따옴표는 {}
따옴표 안의 문자를 어떤 종류의 셸 구두점으로 해석하지 않도록 셸에 지시합니다. 일반적으로 필요하지 않지만 작은따옴표를 사용하는 것은 나쁜 습관이 아닙니다. 내가 아는 한 이것은 다른 측면으로 도 fish
확장됩니다 . {}
문자 {}
자체는 기본적으로 발견된 파일 목록을 나타냅니다.
매개변수 주위에 큰따옴표 iname
도 필요하지 않지만 이를 사용하는 것도 나쁜 습관은 아닙니다.
질문의 명령은 계속 문자를 사용하므로 Enter그 뒤에 누르면 계속 입력할 수 있는 다른 줄이 제공됩니다. 그렇다면 해당 명령 뒤에는 또 무엇이 입력되었나요? 아니면 질문에 세미콜론을 입력하는 것을 방금 잊었나요? 일반 사용자로 명령을 입력한 경우 PDF 파일은 여전히 홈 디렉토리 어딘가에 있을 수 있습니다.
터미널을 열고 를 입력하는 것이 가장 유용합니다 man find
. 그런 다음 이 시나리오를 다루는 사용 지침은 예제 섹션을 참조하세요.
시스템에서 모든 PDF 파일을 찾으려면:
cd && find / -iname "*.pdf" 1>found.txt
이렇게 하면 일반 사용자 계정에 나열 권한이 있는 모든 PDF 파일이 포함된found.txt라는 목록이 생성됩니다. 누락된 파일이 어디로 갔는지 답변할 만큼 정보가 충분한지 모르겠습니다.
답변3
하위 디렉토리에 pdf 파일이 있기 때문에 "find"를 사용하거나 "mv *.pdf ../Documents"만 사용한다고 가정합니다. 먼저 명령이 내가 원하는 대로 작동하는지 확인하기 위해 다음을 수행합니다.
찾다. -유형 f |
그런 다음 xargs를 사용하여 나머지 명령을 채웁니다.
찾다. - f | grep data$ | xargs mv ../문서
나는 습관적으로 "grep"과 "xargs"를 명령 끝에 넣는 것을 좋아합니다. 왜냐하면 나는 이미 출력과 그 출력이 무엇을 하는지 알고 있기 때문입니다.