如果我在错误的位置发布这个,我提前道歉,我对脚本很新,更不用说stackoverflow了:
我有许多文件以.conf
结尾,在同一目录中,文件名相同,但没有.conf
扩展名。例如,我的目录如下所示:
136
136.conf
139
139.conf
...
我想通过循环将.conf
文件移动到相应的文件夹中。我以为我能做到这一点:
for f in *.conf; do
dir=${f:0:13}
mv "$f" "$dir"
done
但我显然做错了什么。我非常感谢任何人的帮助。
答案 0 :(得分:0)
使用Bash参数扩展通过删除扩展名(.
后面的任何内容)来派生目录名称:
for f in *.conf; do
[[ -f "$f" ]] || continue # skip if not regular file
dir="${f%.*}"
mv "$f" "$dir"
done
这比子串方法好一点,因为我们不假设文件名或目录名的长度。