查找所有文件并将特定文件解压缩到本地文件夹

时间:2017-09-14 14:50:31

标签: linux find

find -name archive.zip -exec unzip {} file.txt \;

此命令查找名为archive.zip的所有文件并将file.txt解压缩到我执行命令的文件夹中,有没有办法将文件解压缩到找到.zip文件的同一文件夹?我想将file.txt解压缩到folder1。

folder1\archive.zip
folder2\archive.zip

我意识到脚本中有$ dirname,但如果可能的话,我正在寻找一行命令。

1 个答案:

答案 0 :(得分:0)

@iheartcpp-我使用相同的基本命令成功运行了三种选择...

find . -iname "*.zip"

...,用于提供/的列表作为参数传递给下一个命令。

替代方法1:使用-exec + Shell脚本(unzips.sh)查找

文件unzips.sh:

#!/bin/sh
# This will unzip the zip files in the same directory as the zip are

for f in "$@" ; do
    unzip -o -d `dirname $f` $f
done

使用这种替代方法:

find . -iname '*.zip' -exec ./unzips.sh {} \;

替代2:使用| xargs _ Shell脚本(解压缩)查找

同一unzips.sh文件。

使用这种替代方法:

find . -iname '*.zip' | xargs ./unzips.sh

替代3:同一行中的所有命令(无.sh文件)

使用这种替代方法:

find . -iname '*.zip' | xargs sh -c 'for f in $@; do unzip -o -d `dirname $f` $f; done;'

当然,还有其他替代方法,但希望上述替代方法可以有所帮助。