我需要更改单行(最佳选项)目录名称,更精确 - 删除一些在开头 TO_BE_REMOVED_W._ 具有可变部分的前缀
我可以找到要修改的目录:
find ./ -type d -iname 'TO_BE_REMOVED_W*' -exec mv {} _____ \;
我应该如何形成执行部分来重命名目录以从全名中删除模式?
大多数发行版都带有rename
接受替换模式,所以我通常使用-execdir
with rename
。
例如,要删除PREFIX_
:
$ find . -execdir rename 's/^PREFIX_//' '{}' +
请注意,对于 Arch Linux,这被称为perl-rename
(Arch 的默认rename
值不是rename
大多数发行版上的标准)。
你可以-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 ...
$