如何将不同子文件夹中的RAR文件解压至对应子文件夹?
批量解压RAR文件到对应子目录的解决方案
你当前使用的命令find . -name "*.rar" -exec unrar x -o- {} ;会将所有文件解压到主目录,原因是find在主目录执行unrar,而unrar默认以当前工作目录作为解压目标路径。
解决方法有两种:
方法一:使用find的-execdir参数(推荐)
-execdir会自动切换到目标文件所在的目录后再执行解压命令,直接实现将文件解压到对应子目录:
find . -name "*.rar" -execdir unrar x -o- {} \;
方法二:手动切换目录(兼容老版本find)
如果你的系统不支持-execdir,可以通过bash -c手动切换到RAR文件所在目录再解压:
find . -name "*.rar" -exec bash -c 'cd "$(dirname "$1")" && unrar x -o- "$(basename "$1")"' _ {} \;
参数说明
-o-:覆盖已有文件且不弹出确认提示,和你原命令保持一致,若不需要覆盖可改为-o+(不覆盖)或移除该参数。
内容的提问来源于stack exchange,提问作者Tobias Andersson
相关产品推荐
相关产品推荐

