Duck Asked: 2018-03-26 07:17:26 +0800 CST2018-03-26 07:17:26 +0800 CST 2018-03-26 07:17:26 +0800 CST 递归复制文件而不保留目录 772 我有一堆包含 MP3 文件的目录。这些目录中不包含其他目录。 如何在不删除文件的情况下删除所有目录结构? 这基本上是将在这些目录中找到的所有文件移动到当前目录。当前目录是其他目录所在的目录。 files directory 2 个回答 Voted Hauke Laging 2018-03-26T07:29:06+08:002018-03-26T07:29:06+08:00 parent="$PWD" for dir in *; do test -d "$dir" || continue pushd "$dir" || continue mv -i -- * "$parent" popd rmdir "$dir" done Best Answer αғsнιη 2018-03-26T07:42:14+08:002018-03-26T07:42:14+08:00 有find和单线性: find . -mindepth 2 -type f -execdir sh -c 'mv -vt ../ "$@" ; rmdir "$PWD"' _ {} + -mindepth 2将让find命令忽略当前目录的文件。 -execdir这在这里很重要,这使得find将当前目录更改为找到文件的目录,其中的命令将在该目录本身上运行。 mv -vt ../ "$@",这将扩展为mv -vt ../ "file1" "file 2" "..." "fileN" rmdir "$PWD"将删除将在所有文件移至parentDirectory-execdir后运行的目录。 请注意,在移动到目标路径时,您不会覆盖具有相同文件名的文件。
有
find
和单线性:-mindepth 2
将让find
命令忽略当前目录的文件。-execdir
这在这里很重要,这使得find
将当前目录更改为找到文件的目录,其中的命令将在该目录本身上运行。mv -vt ../ "$@"
,这将扩展为mv -vt ../ "file1" "file 2" "..." "fileN"
rmdir "$PWD"
将删除将在所有文件移至parentDirectory-execdir
后运行的目录。请注意,在移动到目标路径时,您不会覆盖具有相同文件名的文件。