파일 이름에 공백이 없으면 작동하는 몇 가지 예를 찾았습니다. 불행하게도 파일 이름에 공백이 있습니다(제가 선택한 것이 아니며 실제로 공백을 제거해야 합니다).
예를 들어, 이것이 효과가 있을 것이라고 생각한 것입니다.
찾다 . -유형 f | grep ).MOV | xargs rm
다음과 같은 파일을 삭제하고 싶기 때문입니다.
- L112 (1).MOV
- L113 (1).MOV
- L113 (2).MOV
- 등.
그리고 나는 다음과 같은 파일을 유지하고 싶습니다
- L112.MOV
- L113.MOV
- L114.MOV
- 등.
그러면 파일이 올바르게 검색됩니다.
찾다 . -유형 f | grep ).MOV
하지만 rm으로 파이프하면 파일 이름의 공백으로 인해 문제가 발생합니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
rm *\).MOV
답변2
xargs
개행 문자를 구분 기호로 사용하도록 지시합니다 .
find . -type f | grep ).MOV | xargs -d'\n' rm
더 나은 방법은 find
매칭을 수행하고 사용 -print0
하고 xargs -0
허용하는 것입니다.어느파일 이름에는 문자( \n
! )도 포함됩니다.
find . -type f -name '*).MOV' -print0 | xargs -0 rm
더 좋은 점은 직접 find
전화를 하는 것입니다 rm
.
find . -type f -name '*).MOV' -exec rm {} +
가장 좋은 방법은 건너뛰고 rm
삭제 find
를 수행하는 것입니다.
find . -type f -name '*).MOV' -delete
아니면 이 특정한 경우에 누가 모든 중장비를 필요로 합니까?
rm *\).MOV
답변3
이 시도:
find . -name "*).MOV" -exec rm {} \;
답변4
대부분의 Unix 설치에서는 파일 이름 앞에 백슬래시를 붙여 공백을 표시할 수 있습니다. 예를 들어 다음을 시도해 보세요.
mkdir blah
cd blah
touch file1
touch file2
touch "file 3"
touch "file 4"
"ls"를 실행하면 다음이 표시됩니다.
파일 3 파일 4 파일1 파일2
이제 "ls *\ *"를 실행하면 공백이 포함된 모든 항목이 표시됩니다.
파일 3 파일 4
그렇다면 "rm *\ *"만 있으면 될까요? 또는 필요에 맞게 정규식을 약간 수정하세요.
도움이 되었기를 바랍니다!