复制具有给定时间戳的文件的命令

复制具有给定时间戳的文件的命令

我们需要一个命令将文件从当前目录复制到给定日期的另一个目录。

-rw-r----- 1 schmidt schmidt 276423 set 03 10:31 'event01.csv'
-rw-r----- 1 schmidt schmidt 283861 set 03 10:34 'event02.csv'
-rw-r----- 1 schmidt schmidt 280644 set 03 10:40 'event03.csv'
-rw-r----- 1 schmidt schmidt 270234 set 03 03:26 'event04.csv'
-rw-r----- 1 schmidt schmidt 293488 set 12 06:43 'event05.csv'
-rw-r----- 1 schmidt schmidt 287417 set 12 07:48 'event06.csv'
-rw-r----- 1 schmidt schmidt 280519 set 12 10:19 'event07.csv'
-rw-r----- 1 schmidt schmidt 279631 set 12 19:43 'event08.csv'
-rw-r----- 1 schmidt schmidt 286578 set 12 15:15 'event09.csv'
-rw-r----- 1 schmidt schmidt 289830 set 12 18:41 'event10.csv'
-rw-r----- 1 schmidt schmidt 305209 set 19 05:58 'event11.csv'
-rw-r----- 1 schmidt schmidt 308275 set 19 06:20 'event12.csv'
-rw-r----- 1 schmidt schmidt 275015 set 19 14:40 'event13.csv'
-rw-r----- 1 schmidt schmidt 310610 set 19 15:40 'event14.csv'
-rw-r----- 1 schmidt schmidt 311466 set 19 15:41 'event15.csv'
-rw-r----- 1 schmidt schmidt 305241 set 19 15:51 'event16.csv'
-rw-r----- 1 schmidt schmidt 291699 set 19 15:56 'event17.csv'

例如,命令应将具有“set 12”时间戳的所有文件复制到目录/home/12thsep/

有任何想法吗?

答案1

您可以通过中的日期选项进行选择find

find . -maxdepth 1 -type f -newerat '2019-09-19' ! -newerat '2019-09-20' -exec mv '{}' /home/12thsep \;

答案2

您可以使用find正确的mtime参数。例如:

mkdir <dest_path> && find <source path> -mtime -X -a -mtime +Y -exec mv {} <dest_path>/ \;

其中 X 代表“后天”,Y 代表“前天”。请注意,使用-ato 会find在指定的两个条件之间使用 AND。参考查找联机帮助页有关要使用的语法的更多详细信息。

答案3

可以通过以下方式完成:

ls -alF|grep "set 12" >> logxa00.txt

cat logxa00.txt| awk '{print $9}' > logxa01.txt

xargs -a logxa01.txt cp -p -t /home/12thsep/

答案4

试试这个吧。只需列出目录,grep 日期戳,然后从每个文件名(参数 $9)复制到目标目录。那里的额外引号捕获名称中包含空格的文件。

ls -al | grep -i "set 12" | awk -F' ' '{ system("cp \"" $9 "\" /home/12thsep") }'

将来应该很容易针对其他应用程序进行修改。

相关内容