我正在尝试查找括号中以年份开头的所有目录,例如:
[1990] Nature Documentary
然后重命名它们,去掉括号并在它们之间插入破折号。
1990 - Nature Documentary
下面的find
命令似乎找到了结果,但我不能用^
作为模式的前缀来标记目录名的开始,否则它不会返回命中数。
我很确定我需要使用-exec
或-execdir
,但我不确定如何存储找到的模式并对其进行操作
find . -type d -name '[[[:digit:]][[:digit:]][[:digit:]][[:digit:]]] *'
使用[p]rename
:
-depth -exec prename -n 's/[(d{4})]([^/]+)$/$1 -$2/' {} +
如果输出看起来不错,则丢弃-n
如果没有它,您将需要一个带有几个难以理解的参数扩展的shell脚本:
-depth -exec sh -c '
for dp; do
yr=${dp##*/[} yr=${yr%%]*}
echo mv "$dp" "${dp%/*}/$yr -${dp##*/[????]}"
done' sh {} +
删除echo
以应用更改
您可以使用重命名命令
find . -type d -name '[[[:digit:]][[:digit:]][[:digit:]][[:digit:]]] *'| rename -n 's/([d{4}]) ([w,s]+)+$/$1 - $2/'
注意:在删除-n
选项之前,效果不会发生。