我在文件夹中有大量文件。我想做两件事:
我打算使用简单的bash脚本执行此操作。什么是最优雅,最简单易懂的方法?
修改
文件在可移动设备上,我似乎无法在设备上的脚本上设置chmod + X.那么如何从我的主目录运行一个脚本来改变另一个目录中的文件呢?
答案 0 :(得分:4)
添加前缀:
counter=1
for f in *; do
printf -v prefix_str '%03d' "$((counter++))"
mv "$f" "${prefix_str}$f"
done
删除前缀(注意 - 如果您有两个具有相同后缀但前缀不同的文件,则可能会覆盖):
for f in [0-9][0-9][0-9]*; do
mv "$f" "${f:3}"
done
当两个文件具有相同的后缀时,使用mv -n
来避免覆盖。
答案 1 :(得分:1)
这应该有效:
#!/bin/bash
count=1
for file in *; do
if [[ $file =~ [0-9][0-9][0-9].* ]]; then
sfile="${file:3}"
new=$(printf "%03d" ${count})
mv "$file" "${new}${sfile}"
((count++))
else
new=$(printf "%03d" ${count})
mv "$file" "${new}${file}"
((count++))
fi
done
此脚本的作用是检查当前目录中的给定文件。如果文件已经有前缀,它将删除它并分配一个新的顺序前缀。如果文件没有前缀,它将为其添加一个顺序前缀。
最终结果应该是,当前目录中的所有文件(一些带有前缀和一些没有前缀)将具有新的顺序前缀。