【发布时间】:2018-06-23 11:47:28
【问题描述】:
我的一些文件位于不正确的目录中,我正在尝试将它们移动到正确的位置。
示例:
目录 20180622 将仅包含名称中包含 20180622 的文件名
如果 20180622 目录包含名称中包含 20180623 的文件,那么它是一个放错位置的文件,应该转到相应的正确目录,即 20180623 目录结构是固定的(幸运的是)
date1/a/b/someprefix.date1.somesuffix #no problem
date1/a/b/someprefix.date2.somesuffix # problem
date2/c/d/someprefix.date2.somesuffix # no problem
date2/e/f/someprefix.date3.somesuffix # problem
date1/a/b/someprefix.date1.somesuffix
date2/a/b/someprefix.date2.somesuffix # problem fixed
date2/c/d/someprefix.date2.somesuffix
date3/e/f/someprefix.date3.somesuffix #problem fixed
使用find . -type f 我得到了所有文件的列表,但没有得到如何将mv 文件放到正确的位置。
someprefix 可以是任何东西(它也可能包含一个点,因此 cut 不是从文件名中提取日期的好方法)$f =~ (.*)(201[5-8][0-9][0-9][0-9][0-9][0-9])(.*) 是我试图从文件名中提取日期的内容
【问题讨论】:
-
someprefix和somesuffix总是一样吗? -
不幸的是没有 :( ,它可以是任何文本,我只能保证日期将始终被包含,但是 somesuffix 总是以
.gz结尾。如果有的话,我可以为所有一组 someprefix 运行多个命令一个解决方案 -
鉴于 Python 是您用户名的一部分,我建议使用它而不是 Bash 来解决这个问题。实施起来会更容易。
-
你可以在这里学习如何操作 bash 参数:gnu.org/software/bash/manual/html_node/…