我想将文件复制或移动到匹配的文件夹中。 这些是我的文件名:
1-filename-aa.txt
2-filename-aa.txt
3-filename-aa.txt
1-filename-bb.txt
2-filename-bb.txt
3-filename-bb.txt
这些是我的文件夹名称:
aa_fa
bb_fb
我仅使用“ cp”命令尝试了静态示例,但我有40个这样的文件夹:
cp *aa.* aa_*/
cp *bb.* bb_*/
我需要一个循环,可能需要1行代码才能将这些文件复制或移动到匹配的文件夹中。
答案 0 :(得分:1)
#for every file with extension
for file in *.*
do
#extract catalog name
ending=$(sed 's/.*-\(.*\)\.[^.]\+$/\1/g' <<< "$file")
cp "$file" "${ending}_f${ending::1}"/
done
如果您的目录不遵循<2letter> _f <1letter>模式,则可以改用以下方式:
#for every file with extension
for file in *.*
do
#extract catalog name
ending=$(sed 's/.*-\(.*\)\.[^.]\+$/\1/g' <<< "$file")
cp "$file" ${ending}_*/
done
如果*。*还不够,还可以检查$ file是否为目录
[ -d "$file" ] && continue