我必须编写一个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
答案 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
等可能实际完成大部分工作的选项。