Linux 中的 move 命令用于移动具有相同扩展名但不同年份的多个文件

Linux 中的 move 命令用于移动具有相同扩展名但不同年份的多个文件

我在一个文件夹中保存了 2013 年至 2015 年的大约 500 个 .txt 文件,我需要将 2013 年和 2014 年的所有文件移动到其他文件夹中。

答案1

假设“2013 年和 2014 年”的意思是“修改时间为 2013 / 2014 年”,你可以使用以下命令获取文件列表:

stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-

它的作用是:

统计-c'%y%n'

打印最后修改时间和文件名

*

文件夹中的所有文件

grep -v '^2015'

不包括 2015 年的

剪切 -d " " -f 4-

最后去掉时间戳,只留下文件名(假设您没有带有嵌入换行符的奇怪文件名)

然后,您可以使用类似的工具xargs或甚至 for 循环(如果字符允许)来处理文件,以将它们移动到所需的文件夹。

答案2

如果这些文件的名称中包含年份,则非常简单。如果您熟悉终端,下面是一个例子。

假设您想将 2013 年的所有文件移动到名为“2013files”的文件夹中,并且它们的名称类似于“2013 stuff.txt”或“january 2013.txt”

转到你的文件夹

cd /path/to/your/folder/

创建要移动文件的文件夹

mkdir 2013files

然后移动名称中带有“2013”​​的所有文件

rename  ./*2013*.txt  ./2013files

重要提示:在使用“rename”命令之前,请改用“cp”,以确保您没有输入任何错误,否则您最终可能只得到一个文件。

重要提示(2):做任何事情之前,一定要备份你的文件

相关内容