0

我需要更改单行(最佳选项)目录名称,更精确 - 删除一些在开头 TO_BE_REMOVED_W._ 具有可变部分的前缀

我可以找到要修改的目录:

find ./ -type d -iname 'TO_BE_REMOVED_W*' -exec mv {} _____ \;

我应该如何形成执行部分来重命名目录以从全名中删除模式?

4

2 回答 2

2

大多数发行版都带有rename接受替换模式,所以我通常使用-execdirwith rename

例如,要删除PREFIX_

$ find . -execdir rename 's/^PREFIX_//' '{}' +

请注意,对于 Arch Linux,这被称为perl-renameArch 的默认rename值不是rename大多数发行版上的标准)。

于 2021-03-10T07:18:58.723 回答
1

你可以-exec bash -c '...'这样使用:

$ find -name 'foo*'
./foo-01
./foo-05
./foo-02
./foo-03
./foo-04
$ find -name 'foo*' -exec bash -c 'file=$0; echo Now you can do anything with $file ...' {} \;
Now you can do anything with ./foo-01 ...
Now you can do anything with ./foo-05 ...
Now you can do anything with ./foo-02 ...
Now you can do anything with ./foo-03 ...
Now you can do anything with ./foo-04 ...
$
于 2021-03-10T07:12:49.940 回答