文件的特定副本

文件的特定副本

我有具有相同后缀的文件和目录(从 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

相关内容