저는 터미널 기반 명령을 처음 접했지만 원격과 로컬 간에 rsync 명령을 실행했을 때 실수로 /serA/items/count01 대신 잘못된 위치(예: /serA/items)에 파일을 "복사"했습니다.
따라서 현재 /items 디렉터리는 count01 폴더와 count01과 동일한 내용을 가진 여러 다른 항목으로 구성됩니다.
count01 폴더를 건드리지 않고 실수로 복사한 항목(다른 파일 형식)을 모두 삭제하는 빠른 방법이 있습니까? "rm -f"를 사용할 수는 있지만 파일이 100개가 넘으므로 지루한 과정입니다...
또한 이러한 파일은 다른 사람의 이름으로 되어 있고 권한이 잠겨 있는 것으로 나타나기 때문에 수동으로 삭제할 수 없습니다.
답변1
다음과 같은 파일과 폴더가 많이 있습니다.
$ ls
count01 file_a file_b file_c folder_a folder_b folder_c
다음을 제외한 모든 항목을 삭제하려면 count01
:
$ rm -r !(count01)
$ ls
count01
답변2
find . -maxdepth 1 -type f -delete
하지만 삭제 권한이 없으면 작동하지 않습니다.
답변3
다음과 같이 pipline 명령을 사용하는 것이 좋습니다.
find "actual/path" -type f | grep -v "actual/path/plus/foler/to/conserve" |xargs rm
1부: 다음 명령을 사용하여 실제 디렉터리에서 모든 파일을 찾습니다.-type f
2부: 저장해야 하는 경로 제외-v
마지막 부분: 첫 번째 부분과 두 번째 부분에 응답하는 모든 파일을 삭제합니다.
간단히 말해서 다음을 수행할 수 있습니다.
cd
find . -type f | grep -v /serA/items/count01 |xargs rm
이 명령을 사용하면 경로에 포함된 모든 파일과 폴더가 보존됩니다. 정말 대단합니다!
답변4
주문하다:
ls -ltr|grep "^-"|awk '{print $9}'|xargs rm
항상 단계별 규칙을 따르십시오. 이해하기 쉽고 설명도 필요 없습니다. 하지만 위의 명령을 실행하려면 권한이 필요하다는 Tom Hunter의 의견에 동의하세요.