递归遍历目录并在CLI中提取一个目录中的文件

时间:2016-10-20 20:38:43

标签: linux command-line-interface

目前,我正在使用此

unrar e -r *.rar

要提取文件,但这会将所有内容放入我的根目录解压缩文件夹中。目前的结构

/HomeFolder
    /Nextlevel
        /RarFolder
            rarfile.rar

我希望输出为

/HomeFolder
    /Nextlevel
        raroutput.ext

如何更改命令才能执行此操作?

1 个答案:

答案 0 :(得分:0)

尝试使用以下方法:

find /HomeFolder -type d -name 'RarFolder' -printf '%h\n' | xargs -I{} sh -c 'cd {}; unrar e -r *.rar'

它搜索所有嵌套的' RarFolder'在' / HomeFolder'中的子目录,从包含' RarFolder'的子目录中运行 unrar 命令(例如' / HomeFolder / Nextlevel'在你的例子中)。

将文件提取到一个的父目录,其中包含' *。rar'文件,命令可以调整为:

find /HomeFolder -type f -name '*.rar' -printf '%h\n' | xargs -I{} sh -c 'cd {}/..; unrar e -r *.rar'