我在目录中有文件需要使用bash脚本重命名。 Bellow你看到文件的旧名称和新文件名必须是什么。
OLDNAME - > NEWNAME
FILE71 - > 001
FILE72 - > 002
FILE73 - > 003
FILE74 - > 004
FILE75 - > 005
FILE76 - > 006
FILE77 - > 007
FILE78 - > 008
FILE79 - > 009
FILE80 - > 010
OLDNAME和NEWNAME应该与示例中的一样精确,因此: 旧文件名FILE73必须成为新文件名003,FILE74必须为004且FILE80必须为010
提前致谢!
答案 0 :(得分:9)
你走了:
#!/bin/bash
mv FILE71 001
mv FILE72 002
mv FILE73 003
mv FILE74 004
mv FILE75 005
mv FILE76 006
mv FILE77 007
mv FILE78 008
mv FILE79 009
mv FILE80 010
答案 1 :(得分:0)
运行简单for..loop
并完成
#!/bin/bash
files=$(find mypath -maxdepth 1 -type f | sort -u)
a=1
for i in $files; do
new=$(printf "%03d" ${a})
mv ${i} mypath/${new}
let a=a+1
done
答案 2 :(得分:0)
以下是@MarkSetchell脚本
的另一种变体#!/bin/bash
while read orig new
do
echo mv "$orig" "$new"
done <<EOF
FILE71 001
FILE72 002
FILE73 003
FILE74 004
FILE75 005
FILE76 006
FILE77 007
FILE78 008
FILE79 009
FILE80 010
EOF
或者你可以尝试
join -o"1.2 2.2" \
<(find . -maxdepth 1 -name FILE\* -print|cat -n) \
<(seq -f "%03g" 1000|cat -n) |\
xargs -n2 echo
你需要用另一个命令替换echo
- 这取决于你......;)