find -name archive.zip -exec unzip {} file.txt \;
此命令查找名为archive.zip的所有文件并将file.txt解压缩到我执行命令的文件夹中,有没有办法将文件解压缩到找到.zip文件的同一文件夹?我想将file.txt解压缩到folder1。
folder1\archive.zip
folder2\archive.zip
我意识到脚本中有$ dirname,但如果可能的话,我正在寻找一行命令。
答案 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;'
当然,还有其他替代方法,但希望上述替代方法可以有所帮助。