Linux에서 n 분 전에 작성된 모든 파일을 제거하는 방법


15

대부분의 경우 tar 아카이브를 추출 할 때 아카이브 파일과 이름은 같지만 접미사는 다른 디렉토리를 얻게됩니다. 그러나 운이 좋지 않은 경우, 오늘 만났을 때, tarball을 추출한 후 작업 디렉토리에 많은 파일이 퍼져있는 것을 알았습니다.

그래서 당신에게서 배우고 싶은 것은-새로 생성 된 파일을 어떻게 이동할 수 있습니까? 나는 그것이 "find plus rm"의 멋진 접근 방식이어야한다는 것을 알고 있지만 정확히 어떻게 모르겠습니다.

답변:


25

무슨 man find말을 할지 궁금합니다 . 그러면 노력을 보여줄 수도 있습니다.

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • -type f정규 파일을 선택 지정하는 데 사용됩니다.
  • -cmin -1파일의 상태는 지난 과거 (일) 분 안에 변경되었습니다.
  • -delete플래그는 알려진 유니버스 또는 이와 유사한 파일에있는 모든 전자 파일을 삭제하도록 find에 지시하므로 사용시주의하십시오.

먼저 실행 테스트 수행 없이-delete 플래그 것이 좋습니다.

참고 -delete는 이식 할 수없는 확장입니다.

find사용하기 전에 맨 페이지를 읽는 것이 좋습니다 . 상황에 따라 달라질 수있는 다양한 문제와 경고가 포함되어 있기 때문입니다.


좋은! -delete는 -exec rm {} \;
PJ Brunet

옵션 선택을 설명하기 위해 시간을내어 +1
Jad S

5
find . -mtime -60s -exec mv {} /dest/dir \;

최근 60 초 동안 수정 된 현재 디렉토리 (및 하위 디렉토리)에서 모든 파일을 찾아 / dest / dir로 옮깁니다.


3
주의해서 추출한 아카이브 파일은 원래 수정 날짜를 보존 할 수 있습니다. 생성 시간을 사용하는 것이 가장 좋습니다.
Cem Kalyoncu

@CemKalyoncu 좋은 지적.
skarface

0

쉬운 방법 (그래픽 인터페이스가없는 경우)은 mc 를 사용하는 것 입니다. 날짜별로 파일을 정렬 할 수 있습니다.

명령 행에서 tar에 있던 파일을 삭제할 수도 있습니다.

> rm $( tar -ztf mytar.tar.gz )

(-ztf)는 tar.gz 파일 용입니다. 일반 tar의 경우 (-tf) 또는 tar.bz2 파일의 경우 (-jtf)를 사용할 수 있습니다.

파일 목록이 너무 커서 위의 명령이 질식되면 xargs를 사용할 수 있습니다.

> tar -ztf mytar.tar.gz | xargs rm

와우, 내 나쁜-나는 실제로 질문을 읽지 않았다-당신은 그들을 삭제하지 말고 움직여야합니다 (pls, 제목 수정, 오해의 소지가 있음). 여전히 삭제 한 다음 새 디렉토리를 만들고 untar 할 수 있습니다 :). 결국 이동 = 복사 + 삭제.
Sunny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.