批量删除多个父文件夹中的子文件夹
Batch removing a sub folder in several parent folders
在 linux 中,我有一组文件夹,它们都包含相同的子文件夹结构。例如
FolderA/x/y/z/file1.txt
FolderA/x/y/z/file2.txt
FolderB/x/y/z/file1.txt
FolderC/x/y/z/file1.txt
我想 运行 批处理删除其中一个子文件夹,但保留下面的所有文件和文件夹不变。例如。如果我要删除文件夹 "y":
FolderA/x/z/file1.txt
FolderA/x/z/file2.txt
FolderB/x/z/file1.txt
FolderC/x/z/file1.txt
我试过将 find 和 mv 组合在一起,但不太正确
考虑到您想删除其中一个子文件夹,但保留下面的所有文件和文件夹不变,您可以执行以下操作。这不是一个精确的解决方案,一种可能对您有用的技巧。我在电脑上做过很多次
您可以递归地将子文件夹的内容复制到其父文件夹,然后遍历父目录,最后递归删除子文件夹。
- 遍历子文件夹
$ cd path/to/SubFolder
- 将所有内容递归复制到父文件夹
$ cp -R * ..
- 遍历父文件夹
$ cd ..
- 递归删除子文件夹
$ rm -rf SubFolder/
假设你有一个文件夹y,那么,
$ cd path/to/folder/y
$ cp -R * ..
$ cd ..
$ rm -rf y/
对于 运行 批处理您可以使用 find 命令找出子文件夹的路径。
请注意,如果文件夹中有很多文件夹,此技巧会消耗大量时间和资源。但这行得通!
find . -name y -type d -exec sh -c '
for d; do echo mv "$d"/* "$d"/..; echo rmdir "$d"; done' _ {} +
如果结果符合您的预期,请删除 echo
。
在 linux 中,我有一组文件夹,它们都包含相同的子文件夹结构。例如
FolderA/x/y/z/file1.txt
FolderA/x/y/z/file2.txt
FolderB/x/y/z/file1.txt
FolderC/x/y/z/file1.txt
我想 运行 批处理删除其中一个子文件夹,但保留下面的所有文件和文件夹不变。例如。如果我要删除文件夹 "y":
FolderA/x/z/file1.txt
FolderA/x/z/file2.txt
FolderB/x/z/file1.txt
FolderC/x/z/file1.txt
我试过将 find 和 mv 组合在一起,但不太正确
考虑到您想删除其中一个子文件夹,但保留下面的所有文件和文件夹不变,您可以执行以下操作。这不是一个精确的解决方案,一种可能对您有用的技巧。我在电脑上做过很多次
您可以递归地将子文件夹的内容复制到其父文件夹,然后遍历父目录,最后递归删除子文件夹。
- 遍历子文件夹
$ cd path/to/SubFolder
- 将所有内容递归复制到父文件夹
$ cp -R * ..
- 遍历父文件夹
$ cd ..
- 递归删除子文件夹
$ rm -rf SubFolder/
假设你有一个文件夹y,那么,
$ cd path/to/folder/y $ cp -R * .. $ cd .. $ rm -rf y/
对于 运行 批处理您可以使用 find 命令找出子文件夹的路径。
请注意,如果文件夹中有很多文件夹,此技巧会消耗大量时间和资源。但这行得通!
find . -name y -type d -exec sh -c '
for d; do echo mv "$d"/* "$d"/..; echo rmdir "$d"; done' _ {} +
如果结果符合您的预期,请删除 echo
。