![Shell 脚本将所有文件从子文件夹移动到父文件夹](https://linux22.com/image/961427/Shell%20%E8%84%9A%E6%9C%AC%E5%B0%86%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E4%BB%8E%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E7%A7%BB%E5%8A%A8%E5%88%B0%E7%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9.png)
文件夹 中有很多文件夹A
。我想将文件从所有这些文件夹移动到A
。
或者
我想从子文件夹中剪切所有文件并将其粘贴到父文件夹中。
怎么做?
答案1
转到你的A
目录并运行
find . -mindepth 2 -type f -print -exec mv {} . \;
意思是“找到此目录及其子目录中的所有文件,并对目标目录执行 mv 。对找到的每个文件执行移动操作,将其移动到当前目录。
答案2
那么您可以创建一个文件并将其命名为“cutme”(要在终端类型中创建一个名为cutme的文件nano cutme
,请按CTRL + X,然后按ENTER。)例如,并在其中粘贴以下内容,假设:
- 您想以递归方式执行此操作(在子文件夹以及这些子文件夹的子文件夹中)
- 您想跳过移动脚本文件
- 您有权限移动该文件夹中的文件
- 文件名称中可能包含或不包含空格
find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;
注意名称卡梅在行内。它应该与您将运行的脚本相同。
创建文件并粘贴上述行后,在与脚本相同的文件夹中运行以下命令:
chmod +x cutme
。这将为您的新文件赋予“可执行”标志,以便您可以像这样执行它:./cutme
。