我有具有相同后缀的文件和目录(从 0 到 310)。我想复制file(0)
到directory(0)
、file(10)
到directory(10)
并继续直到file(310)
到directory(310)
。
有什么办法可以同时复制所有内容吗?
答案1
循环文件并将它们移动到各自的目录,
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE##file}";
fi
done
if [[ -f "$FILE" ]]; then
,检查它$FILE
是否是文件-f
而不是目录-d
。${FILE##file}
, (cut-up-to-last-prefix)file
从文件名中删除前缀并仅保留数字部分。- 您需要进行
echo
空跑才能进行实际移动。
示例输出:
file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3
更新:
如果您的文件名具有类似后缀file##.xyz
,您可以使用以下脚本:
for FILE in *; do
if [[ -f "$FILE" ]]; then
dname="${FILE##file}";
echo mv "$FILE" "dir${dname%.inp}";
fi
done
这${dname%.inp}
部分代码(剪切到第一个后缀).inp
从文件名的末尾剥离了之前${FILE##file}
已经剥离其file
前缀的部分,因此只会产生数字部分。
或者甚至您可以按如下方式使用。
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done