我正在尝试重命名文件,例如screen-0001.tif
使用此 SO 问题0001.tif
中的方法:
for file in *.tif
do
echo mv "$file" "${screen-/file}"
done
无法改变任何东西。感谢我出错的地方。
恕我直言,更简单的方法是使用 Perl 的rename
脚本。我在这里使用它,--dry-run
所以它只是告诉你它会做什么,而不是实际做任何事情。--dry-run
如果/当您对命令感到满意时,您只需删除:
rename --dry-run 's/screen-//' *tif
'screen-001.tif' would be renamed to '001.tif'
'screen-002.tif' would be renamed to '002.tif'
'screen-003.tif' would be renamed to '003.tif'
'screen-004.tif' would be renamed to '004.tif'
它还有一个额外的好处是它不会覆盖任何碰巧同名的文件。所以,如果你有文件:
screen-001.tif
0screen-01.tif
你这样做了,你会得到:
rename 's/screen-//' *tif
'screen-001.tif' not renamed: '001.tif' already exists
rename
使用Homebrew很容易安装,使用:
brew install rename
两件事情:
${file#screen-}
。${file/screen/}
环境变量的名称总是放在第一位。然后是模式类型,然后是模式
这是我将如何做到这一点:
$ for file in *.tif
> do
> echo "mv '$file' '${file#screen-}'"
> done | tee mymove.sh # Build a shell script
$ vi mymove.sh # Examine the shell script and make sure everything is correct
$ bash mymove.sh # If all is good, execute the shell script.