当path包含空格时,使用bash在Linux中解压缩文件会导致错误

这样的文件path:path/path/path/文件名2.3.pdf.zip

我究竟做错了什么:

# unzip files back to normal # and remove zip files for f in `find "$1" -type f -iname "*.zip"`; do dir=`dirname "$f"` unzip -o "$f" -d "$dir" rm -f "$f" done 

错误消息:unzip:无法find或打开文件,file.zip或file.ZIP

使用UnZip 5.52红帽企业Linux服务器版本5.10(Tikanga)

我认为你的循环正在分裂基于空间的find输出。 你可能想要一次读一行,像这样

 find "$1" -type f -iname "*.zip" | while read f do dir=`dirname "$f"` unzip -o "$f" -d "$dir" rm -f "$f" done 

或者,也可以设置IFS:

 IFS='\n' for f in `find "$1" -type f -iname "*.zip"`; do dir=`dirname "$f"` unzip -o "$f" -d "$dir" rm -f "$f" done 

也许你的问题在这里

 dir=`dirname $f` 

改为尝试

 dir=`dirname "$f"` 

另外,在几行代码中还有一些不必要的分号。