【发布时间】:2021-09-12 16:52:48
【问题描述】:
我有一个 bash 脚本,其中包含以下几行:
for ((iTime=starttime;iTime<=endtime;iTime++))
do
find . -name "*${iTime}*" -exec cp --parents \{\} ${dst} \;
done
我有一个包含几个文件夹的结构,包括子文件夹和树底部的许多文件。这些文件在文件名中标有日期和时间信息,例如“filename_2021063015300000_suffix”。时间格式为 yyyymmddhhmmss,两位数分别表示 1/10 和 1/100 秒。我有很多文件,这意味着我的方法很慢。这些文件的时间距离为几分钟,因此只应复制几个文件(例如,>10000 个中的每个子文件夹 10 个)。
如何在一个查找和复制命令中找到时间范围内的所有文件并将它们全部获取?也许使用一个查找命令获取要复制的所有文件的列表,然后复制文件路径列表?但是我该怎么做呢?
【问题讨论】:
-
文件名和后缀是否会根据文件而变化,还是文字“文件名”和“后缀”?另外,您是否提前知道文件名和后缀是否包含数字或下划线?
-
我想我会将
find输出与开始和结束时间作为变量一起通过管道传输到awk,并在那里过滤它们 - 它会非常快。