如何移动多个目录中的所有文件和文件夹?

如何移动多个目录中的所有文件和文件夹?

因此,我正在编写这个 bash 脚本来执行各种操作,但最后一步是将四个不同目录的内容移动到一个位置,以便我可以运行 shred 命令或删除或类似的东西(尚不确定是什么)。这是我目前所拥有的

for dir in $dir1 $dir2 $dir3 $dir4; do
     mv -vi ./* $CYCL
done

此循环是否会立即从这些目录中删除所有文件和文件夹?还是我必须更改它?

编辑:更改了代码。其中有一个函数,我用原始代码替换了它

答案1

  • 简洁的方式:

    mv -vi {$dir1,$dir2,$dir3,$dir4}/* $CYCL
    

    无论如何,我不知道你为什么要使用-i要删除的文件选项。你不关心是否有任何内容被覆盖,你只是增加了更多的手动步骤。

  • 使用你的循环:

    for dir in $dir1 $dir2 $dir3 $dir4; do
       mv -vi $dir/* $CYCL
    done
    

for var in list; do ; done语法将按顺序将列表中每个元素的值分配给变量X,然后运行do块中的所有内容。如果您没有提及所使用的变量,则不会对其执行任何操作。例如,这将简单地打印“hello”3次:

for i in Tom Dick Harry; do echo hello; done
hello
hello
hello

如果您想要对列表中的元素进行实际操作,则需要引用分配给它们的变量:

$ for i in Tom Dick Harry; do echo hello $i; done
hello Tom
hello Dick
hello Harry

因此,你的循环正在运行mv ./* $CYCL,这会移动你的当前目录的值$CYCL。它不会以任何方式触及目录 1-4 的内容。

相关内容