我想这有点棘手:-)
当我在文件夹中打开终端并运行脚本时,该脚本应:
我们站立的父文件夹将不包含任何文件夹,仅包含所有文件夹的内容。
它也应该适用于隐藏的文件和文件夹。这对房屋打扫非常有用:-)
我已经尝试过类似的方法:
find . -type f -name "*" -depth | xargs mv ./
但是没有运气。
谢谢您的帮助 :-)
我认为最简单,最干净的方法是使用以下命令:
find . -type f -exec mv --backup=numbered {} . \; && find . -maxdepth 1 -type d -exec rm -r {} +
find
命令#1:
.
:在当前工作目录中搜索;-type f
:搜索文件;-exec [...]
:对每个结果执行命令(使用{} [...] \;
)或对所有结果执行命令(使用{} +
);mv --backup=numbered . \;
:将每个结果移动到当前工作目录中,以当前工作目录中已经存在的相同文件名创建文件备份;find
命令2:
.
:在当前工作目录中搜索;-maxdepth 1
:仅在目标目录层次结构的第一级中搜索;-type d
:搜索目录;-exec [...]
:对每个结果执行命令(使用{} [...] \;
)或对所有结果执行命令(使用{} +
);rm -r {} +
:删除每个结果;在测试目录层次结构上进行测试:
user@debian ~/tmp % tree -a
.
├── 1
│ ├── file1
│ ├── file2
│ ├── file3
│ └── .hidden
├── 2
│ ├── file1
│ ├── file2
│ ├── file3
│ └── .hidden
└── 3
├── file1
├── file2
├── file3
└── .hidden
3 directories, 12 files
user@debian ~/tmp % find . -type f -exec mv --backup=numbered {} . \; && find . -type d -exec rm -r {} +
rm: refusing to remove "." or ".." directory: skipping "."
user@debian ~/tmp % tree -a
.
├── file1
├── file1.~1~
├── file1.~2~
├── file2
├── file2.~1~
├── file2.~2~
├── file3
├── file3.~1~
├── file3.~2~
├── .hidden
├── .hidden.~1~
└── .hidden.~2~
0 directories, 12 files
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句