我有一个来自 Windows PC 的旧备份,但大多数文件末尾都有时间戳。所有文件都需要保留其原始名称,但没有该时间戳。
如何(2019_04_12 11_03_06 UTC)
从多个文件夹中的所有文件中删除特定部分。
示例文件:
messages (2019_04_12 11_03_06 UTC).properties
maintenancemode (2019_04_12 11_03_06 UTC).jar
据我所知,所有文件都有相同的时间戳
答案1
perlrename
命令功能强大。它可以查找字符串模式并替换它们。如果您的文件有类似的时间戳,则可以使用以下命令:
rename -n 's/\(2019.*?\)//' *
这将删除所有看起来像的字符串(2019...)
。因此,即使某些文件具有不同的时间戳,也不会有影响。
?
通过附加到.*
(感谢 Steeldriver),匹配变得非贪婪。因此,表达式将仅匹配直到第一次出现 的字符)
,而不是字符串中可能出现的其他字符。
该-n
选项使命令仅显示将要执行的操作。重命名操作并未有效完成。这允许您首先仔细检查输出,如果它显示该命令将执行您想要的操作,则重新运行该命令,而无需选择实际继续-n
重命名。
该工具可能未默认安装。您可以使用以下命令安装它:
sudo apt install rename
答案2
我用这段代码修复了这个问题
find . -maxdepth 20 -type f | while read LINE
do
mv "$LINE" `echo $LINE | sed 's/\s(2019_04_12 11_03_06 UTC)//'`
done