在linux中根据修改date复制文件

这可能是一个重复的问题,但我找不到这个解决scheme,我想从一个目录复制过去3个月的文件到另一个目录,但我只能find通过使用以下命令列出文件。

find . -mtime -90 -ls 

我真的不知道如何通过使用-mtime来复制文件。 我是新来的Linux请帮助我。

Solutions Collecting From Web of "在linux中根据修改date复制文件"

find使用-exec选项:

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

-exec会将find返回的每个结果复制到指定的目录(在上例中为targetdir )。

使用这个命令:

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

除了回到一定的天数之外,还可以选择确切的日期和时间

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

上面复制在2016年9月18日20:05:00之后创建的目录中的所有文件到文件夹(3个月之前:)

注意find命令的符号,它不是这个:'这是一个倒退:'日期选择是用这个:'

如果您的文件名中包含空格,换行符,制表符或通配符,则可以使用StéphaneChazelas的任一解决方案,第一个用于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 "$@" FOLDER' sh {} + 

我想我会暂时存储文件列表,并使用循环。

 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 

例如:选择日09/08/2017

 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