我想重命名文件夹及其子文件夹中的所有文件。
我需要将字符串HEX20
更改为字符串HEX8
。
有些文件名有其他数字,所以我不能简单地将20
更改为8
。
完整路径的一个例子是:
\\FRDS01006\z188018\FEM\Linear\HEX20\3HEX20\3HEX20.bof
我想对文件夹名称进行相同的替换。
答案 0 :(得分:3)
这个怎么样:
find . -name "*HEX20*" -exec rename HEX20 HEX8 '{}' +
这将以递归方式搜索当前目录和所有子目录以匹配HEX20
。 (省略了-type f
标志,因为除了文件之外,提问者想要更改目录的名称。)然后它将构建一个长rename
命令并最终调用它。这种类型的构造可能比使用sed
构建一系列命令然后逐个执行它们更简单。
答案 1 :(得分:0)
试试这个:
find . -type f -name "*HEX20*" | sed 's/\(.*\)HEX20\(.*\)/mv \0 \1HEX8\2/' | sh
通过这种方式,您可以找到名称中包含HEX20
的常规文件:
find . -type f -name "*HEX20*"
然后更改HEX20
whith HEX8
的最后一次出现并编译mv
命令:
find . -type f -name "*HEX20*" | sed 's/\(.*\)HEX20\(.*\)/mv \0 \1HEX8\2/'
最后用sh
执行已编译的命令:
find . -type f -name "*HEX20*" | sed 's/\(.*\)HEX20\(.*\)/mv \0 \1HEX8\2/' | sh