我从周一到周五创建了一组文件:
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 实用程序会做得很好:-)
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
in 。find
mv