Shell脚本将所有文件从子文件夹移动到父文件夹

Rah*_*ara 61 bash scripts

我在 folder 中有一堆文件夹A。我想将所有这些文件夹中的文件移动到A.

或者

我想从子文件夹中剪切所有文件并将它们粘贴到父文件夹中。

怎么做?

Tum*_*oid 101

转到您的A目录并运行

find . -mindepth 2 -type f -print -exec mv {} . \;
Run Code Online (Sandbox Code Playgroud)

这意味着“找到此目录及其子目录中的所有文件,并使用目标目录执行 mv 。对于找到的每个文件,将它们移动到当前目录。

  • 这是非常危险的。如果您在不同的子文件夹中有具有相同文件名的文件,您将使用上次查找覆盖所有这些文件。最好将 mv 与 --backup=numbered: `find 一起使用。-mindepth 2 -type f -print -exec mv --backup=numbered {} 。\;` (17认同)

Lui*_*ado 5

好吧,您可以创建一个文件并将其命名为“cutme”(在终端类型中创建一个名为 cutme 的文件nano cutme。要保存它,请按 CTRL+X 然后按 ENTER。)例如,并在其中粘贴以下内容,假设:

  1. 您想递归地执行此操作(在这些子文件夹的子文件夹和子文件夹中)
  2. 您想跳过移动脚本文件
  3. 您有权移动该文件夹中的文件
  4. 文件名称中可能包含也可能不包含空格

find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;

请注意该内的名称cutme。它应该与您将运行的脚本相同。

创建文件并粘贴上述行后,在与脚本相同的文件夹中运行以下命令:

chmod +x cutme. 这会给你的新文件中的“可执行文件”标志,所以你可以这样执行它:./cutme