Mac OS bash别名在mv命令中断

时间:2017-11-20 21:24:27

标签: bash macos alias

我正在尝试重命名大约40张图片(" 1.png"到" 40.png")。

第一个命令在终端中起作用:

user$ ls | cat -n | while read n f; do mv "$f" "$n.png"; done

但是我想把这个命令变成〜/ .bash_profile中的别名。

alias rename-png="ls | cat -n | while read n f; do mv "$f" "&n.png"; done"

alias rename-png="ls | cat -n | while read n f; do mv /"$f/" /"&n.png/"; done"

rename-png() {
    ls | cat -n | while read n f; do mv "$f" "$n.png"; done
}

第一个别名不起作用,我认为这是因为引号没有被转义。但是,即使在转义双引号时,命令也会在mv处中断。我也在一个函数中尝试过它,但它也没有用。

错误:

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory

有人可以向我解释我做错了吗?

1 个答案:

答案 0 :(得分:1)

不要使用别名来处理这种复杂的事情;只需使用一个功能。此外,请勿尝试使用ls的输出。使用带有模式的for循环:

rename-png () {
  i=0
  for f in ./*; do
    mv "$f" "$i.png"
    i=$((i + 1))
  done
}