2013-08-12 2 views
12

중복 된 질문 일 수 있지만이 솔루션을 찾을 수 없습니다. 지난 3 개월 동안 다른 디렉토리로 파일을 복사하고 싶지만 목록에있는 파일 만 찾을 수 있습니다. 다음 명령을 사용하여 파일을 삭제하십시오.리눅스의 수정 날짜를 기준으로 파일 복사하기

find . -mtime -90 -ls 

정말 -mtime을 사용하여 파일을 복사하는 방법을 모르겠어요. 나는 리눅스를 처음 사용하니 좀 도와주세요.

답변

18

-exec 옵션을 사용하여 find을 위해 :

find . -mtime -90 -exec cp {} targetdir \; 

-exec (위의 예에서 targetdir) 지정된 디렉토리에 find에 의해 반환 된 모든 결과를 복사합니다.

2

나는 처음에는 파일 목록을 임시로 저장하고 루프를 사용한다고 생각합니다. 너무 큰 수없는 경우

find . -mtime -90 -ls >/tmp/copy.todo.txt 

당신은

for f in `cat /tmp/copy.todo.txt`; 
do echo $f; 
done 

참고로, 목록을 읽을 수 있습니다 : 고양이 주위에 따옴표를 ... 종종 키보드의 왼쪽 상단 모서리에 역 인용 부호이다

그런 다음 복사 명령을 사용하여 echo 명령을 대체 할 수

for f in `cat /tmp/copy.todo.txt`; 
do cp $f /some/directory/ 
done 
+0

은 오른쪽 상단에있는 선택 일. 물음표 옆에. (유럽/북유럽 키보드) – f2lollpll

3

이 명령을 사용하십시오 :

for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done 
3

한 또한 일의 일정 금액으로 되돌아가는 것보다 다른 정확한 날짜와 시간을 선택할 수 있었다 디렉토리에있는 모든 파일

cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER 

위 사본 2016 년 9 월 18 일 20:05:00 후 폴더 (오늘 3 개월 전) :

find 명령의 기호와주의해서 사용해야합니다. '` 날짜 선택이 함께 : :이하는 역 따옴표입니다'당신이 그들의 이름에 공백, 줄 바꿈, 탭 또는 와일드 카드에 파일이있는 경우

, 당신은 스테판 Chazelas가의 솔루션 중 하나를 사용할 수 있습니다이 먼저입니다 GNU를 들어, 두 번째 GNU 또는 일부 BSD의를위한 것입니다

find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} + 
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} + 
1

예 : 내 키보드 역 따옴표에 2017년 9월 8일

ls -l 
-rw-rw-rw- 1 root  system   943 Aug 09 02:59 File 

for j in `ls -l |awk '{ if ($7 == "09") print $9}'` 
    do 
     mv $j $Destination; 
    done 
관련 문제