생성 날짜를 기준으로 파일을 다른 폴더로 이동

생성 날짜를 기준으로 파일을 다른 폴더로 이동

월요일부터 금요일까지 파일 세트를 만들었습니다.

a -- > 08/20
a1---> 08/21
a2---> 08/21
a3---> 08/21
a4---> 08/22
a5 --> 08/23

방금 08/21 파일을 다른 폴더로 옮겼습니다.

어떻게 해야 하나요?

답변1

파일의 수정 시간이 보존된다고 가정합니다(파일이 생성된 후에는 수정되지 않습니다). 그런 다음 find명령과 옵션을 사용하여 데이터가 며칠 전에 마지막으로 수정된 파일을 -mtime검색 할 수 있습니다 . X따라서 48시간 전에 생성된 현재 작업 디렉토리의 모든 파일을 찾으려면 다음을 사용하십시오.

find ./ -type f -mtime 2

다른 디렉터리로 이동

find ./ -type f -mtime 2 -exec mv {} DEST_DIR/ \;

또한 현재 날짜와 파일을 요청한 날짜 사이의 일수를 추정해 볼 수 있습니다(이 경우 22일).

DAY_CUR="`date +%d`"
DAY_REQ=22
DAY_DIF=$((DAY_CUR - DAY_REQ))
    
find ./ -type f -mtime $DAY_DIF -exec mv {} DEST_DIR/ \;

코드는 이틀이 서로 다른 두 달의 경우를 처리할 수 없기 때문에 완벽하지는 않지만 진행 방법을 보여줍니다.

답변2

따라서 속성에 따라 파일을 이동하려고 합니다. 이는 파일을 식별하거나 "찾은" 다음 결과를 다른 폴더로 이동해야 함을 의미합니다.

찾기 유틸리티는 훌륭한 작업을 수행합니다 :-)

find인수 없이 호출하면 전체 폴더 내용이 나열됩니다. 그런 다음 다양한 필터 조건을 지정할 수 있습니다. 전체 목록을 보려면 man find(http://unixhelp.ed.ac.uk/CGI/man-cgi?find).

여기 몇 가지 예가 있어요.

  [..]
   -mmin n
      File's data was last modified n minutes ago.

   -mtime n
      File's  data was last modified n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file modification times.

   -newer file
      File was modified more recently than file.  If file  is  a  sym-
      bolic  link and the -H option or the -L option is in effect, the
      modification time of the file it points to is always used.
  [..]

-exec그런 다음 를 사용 하여 호출 하고 현재 파일에 대한 자리 표시자로 mv사용할 수 있습니다 .{}

예: find /some/path/ -mtime +4 -exec mv {} /some/other/path/

전문가 팁: 올바른 파일을 받았는지 확인하기 위해 find전화할 필요가 없습니다 . :-)-exec

답변3

find명령을 사용하면 해당 날짜에 생성된 파일을 식별하고 파일 이름 패턴을 사용하여 검색을 추가로 제한할 수 있습니다. 파일에서 사용하세요 -exec.findmv

관련 정보