【发布时间】:2020-02-21 22:14:40
【问题描述】:
我有很多文件(大约 50K),并且需要在创建它们的每一天将它们存储在特定文件夹中。创建日期必须取自它的名称,类似于:
normal_007a02ece6e249d2_940163493_210061_user_sector_23938_22-46-58_2019-12-10-00CA01DF-10270594-00000001.mp3
那里有一些额外的信息,但我必须将其移至文件夹 10,即本月的第 10 天。 所以我有 31 个文件夹 (1-31) 并且必须将每个文件移动到其各自的日文件夹。 任何线索我该怎么做?
编辑: 这就是我正在尝试的:
pattern ='(normal_[A-Za-z0-9].*_[A-Z].*_[0-9]{5}_[0-9]*-[0-9]*-[0-9]*_([0-9]*)-([0-9]*)-([0-9]*).*)'
for file in *.mp3
do
# echo $file
if [[ $file =~ $pattern ]]; then
echo "Match ${BASH_REMATCH[0]}"
fi
提前致谢
【问题讨论】:
-
@Cyrus 这些问题的标题似乎相关,但答案不相关。
-
不...用户、扇区的值大小不固定,用户可能是“jhon.doper、jhon.doe、jenny.alva 等”,扇区也可能不同。 ..我有这个与文件 normal_[A-Za-z0-9].*_[A-Z].*_[0-9]{5}_[0-9]*-[0-9] 匹配的 RE *-[0-9]*_[0-9]*-[0-9]*-[0-9]*.mp3 但无法弄清楚如何获取大量文件的参数
-
Pluse-uno 用于提高您的 Q....如果您可以确定文件名中唯一的
-字符在YYYY-MM-DD部分中,那么只需echo "$fName" |sed 's/^.*\([1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]\).*$/\1/'就可以了日期部分。做你需要的。按照标题dd_mm_yyy中的描述组织数据是一个令人头疼的问题。您的示例日期是长期存储数据的更好格式。一切都会自然排序,您无需重新解析文件名即可确定您的位置。祝你好运! -
@JorgeCornejoBellido :是的,我现在看到您的数据确实有其他
-,但除非您的文件名中嵌入了两个(或更多)日期字符串,否则月日的限制(@ 987654328@) 将返回正确的值。我现在使用您提供的样本对其进行了测试,它仅返回 YYYY-MM-DD 值。我还试图指出,当你有复杂的规则要匹配时,试图创建一个完美的正则表达式是很麻烦的,而且通常只关注你确实需要的值更容易实现你的目标。如果这对你不起作用,我理解。祝你好运!