Seb*_*ian 5 bash scripts directory mv
这会有点棘手,我想:-)
当我在文件夹中打开终端并运行脚本时,该脚本应该:
我们所在的父文件夹将不包含文件夹,只包含所有文件夹的内容。
它也适用于隐藏的文件和文件夹。这对房屋清洁非常有用:-)
我试过这样的事情:
find . -type f -name "*" -depth | xargs mv ./
Run Code Online (Sandbox Code Playgroud)
但没有运气。
感谢您的帮助 :-)
kos*_*kos 10
在我看来,最简单、最干净的方法是使用以下命令:
find . -type f -exec mv --backup=numbered {} . \; && find . -maxdepth 1 -type d -exec rm -r {} +
Run Code Online (Sandbox Code Playgroud)
find 命令#1:
.: 在当前工作目录中搜索;-type f: 搜索文件;-exec [...]:为每个结果执行一个命令(使用{} [...] \;)或为所有结果执行一个命令(使用{} +);mv --backup=numbered . \;: 将每个结果移动到当前工作目录中,为当前工作目录中已有的具有相同文件名的文件创建一个备份;find 命令#2:
.: 在当前工作目录中搜索;-maxdepth 1:仅在目标目录层次结构的第一级搜索;-type d: 搜索目录;-exec [...]:为每个结果执行一个命令(使用{} [...] \;)或为所有结果执行一个命令(使用{} +);rm -r {} +: 删除每个结果;在测试目录层次结构上进行测试:
find . -type f -exec mv --backup=numbered {} . \; && find . -maxdepth 1 -type d -exec rm -r {} +
Run Code Online (Sandbox Code Playgroud)
要在当前目录中递归移动所有文件,请注意这会将所有文件移动到此目录(而不是它们的父目录):
find . -type f -exec mv -i -t . {} +
Run Code Online (Sandbox Code Playgroud)而不是-i您可以使用--backup=numbered@kos 已经显示的那样。
删除所有空目录:
find . -type d -empty -delete
Run Code Online (Sandbox Code Playgroud)阅读man find以获得更多想法。
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |