Bash移动文件并使用递增扩展名重命名

时间:2014-11-09 22:55:00

标签: bash unix rename move increment

我必须编写一个Bash脚本来查看文件是否存在并将文件移动到特定目录,然后重命名该文件,扩展名为.1或.2等,如果.1已经存在。我觉得我有一个良好的开端,但它没有识别目录,即使我可以直接输入mv文件目的地,它的工作原理。我哪里错了?

#!/bin/bash
DESTINATION="~hbrown31/homework"
FILE=$1
if [ -e "$FILE" ]
 then
  for $FILE in 'ls|sort -g -r'
   do
    echo "File is being moved and renamed"
    NEWFILE="$DESTINATION""$FILE""."
    mv "$FILE" "$(NEWFILE + 1)"
   fi
 else
  echo "File does not exist"
fi

1 个答案:

答案 0 :(得分:0)

我并不完全清楚你想要什么(我不理解' ls |排序',但我认为你正在寻找类似的东西:

#!/bin/bash
DEST=~hbrown31/homework  # Do not quote or the ~ will not be expanded

move() {
  suffix=0
  file="$DEST/$1"
  while test -e "$file"; do
    file="$DEST/$1.$((++suffix))"
  done
  mv -v "$1" "$file"
}

for x; do move "$x"; done

请注意,mv的某些版本支持-b--backup等可能实际完成大部分工作的选项。