디렉토리의 폴더를 제외한 모든 파일 삭제

디렉토리의 폴더를 제외한 모든 파일 삭제

저는 터미널 기반 명령을 처음 접했지만 원격과 로컬 간에 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의 의견에 동의하세요.

관련 정보