检索多个子文件夹的内容,并将它们移动到单个文件夹中

检索多个子文件夹的内容,并将它们移动到单个文件夹中

我从古登堡计划下载了 7000 多本电子书,但我遇到了一个问题。每本书都放在自己的 zip 文件中,每个 zip 文件都有自己的文件夹。我的问题是我不想手动浏览每个文件并解压它们并将电子书放在一个地方。如果我能将 zip 文件放在一个地方,那么用一个命令解压所有文件将是一件很容易的工作。

那么,如何将文件放入一个文件夹中,而不是放入它们自己的子文件夹中?

答案1

假设包含 zip 文件的所有目录都有一个共同的父目录,您可以使用它find来查找所有 zip 文件,然后对这些文件执行 unzip 并指定要将文件提取到的目录:

find /path/under/zip/folders -name "*.zip" -exec unzip {} -d /target/path \;

答案2

如果嵌套文件夹超过一层,通配符方法很快就会变得混乱……

我通常使用 Midnight Commander 执行类似的任务(以及大多数其他文件操作)。使用以下工具安装

sudo apt-get install mc

然后只需输入“mc”即可启动它,导航到电子书所在的文件夹,按 Esc,然后按 Ctrl-?,输入搜索条件,在结果窗口中按 [Panelize]。现在,您可以按 * 选择所有 zip 文件,然后按 F5 或 F6 将它们复制/移动到另一个窗格中的目录中

答案3

您有使用通配符的经验吗?您可以这样做

mv common_part_of_folder_name*/*.zip .

星号的意思是“任何东西”。如果你的目录中只有 gutenberg,你可以直接运行

mv ./*/*.zip .

将所有 zip 文件放入当前目录中。如果情况比这复杂得多,Perl 或 shell 脚本可能是最佳选择。

相关内容