【发布时间】:2011-06-19 04:09:29
【问题描述】:
我有这样的文件结构:
- 00000010
- 000000001.file1
- 000000001.file2
- 00000020
- 00000003.file1
- 00000003.file2
- 00000003.file3
- ...
因此,有 8 位名称的文件夹包含一个或多个名称以 8 位数字开头的文件。但是这些文件名——比方说——不同步。所以现在我尝试在 bash 中递归地重命名它们以存档:
- 00000010
- 000000010.file1
- 000000010.file2
- 00000020
- 00000020.file1
- 00000020.file2
- 00000020.file3
- ...
我的脚本看起来像:
#! /bin/bash
find * -maxdepth 1 -name "*" -type d | while read -r dir
do
rename 's/$dir\/[0-9]{8}/$dir/' *
done
但这不起作用,并且会出现类似的错误
全局符号“$dir”需要显式 (eval 1) 第 1 行的包名称。
如何编写它以根据文件夹名称重命名文件?
感谢您的帮助!
【问题讨论】:
-
请不要cross-post。
-
好的,已经认为这可能不是最好的主意。再也不会发生!对不起。
标签: linux bash shell scripting rename