【发布时间】:2016-12-28 04:40:54
【问题描述】:
总结
我需要“修复”整个文件系统中的一批 .zip 文件,方法是:
- 将其名称中的“”(空格)替换为“_”,以及其内容文件的名称
- 重新压缩它们
解压卡住了,因为 "$(dirname "$0")/$(basename "$0")" 抛出错误。
更长的描述。
文件层次结构:
banners/
|
germany/
| |
| active/
| | |
| | 300x250/
| | | |
| | | file.jpg
| | | AC2 xx.zip
| | |
| | 600x228/
| | |
| | file.jpg
| | AC4 xx.zip
| nautics/
|
|
austria/
|
...
这是我尝试过的:
~/banners/> find . -name "*" -exec sh -c 'mv -- "$0" "$(0// /_)"' {} \;
在这里,我从banners/ 向下删除了所有文件名/目录名中的所有空格。AC2 xx.zip 现在看起来像AC2_xx.zip
我现在需要将这些 .zip 文件解压缩到一个新的子目录中,与 .zip 文件本身处于同一级别,与这些 .zip 文件命名相同。
这是我尝试过的命令:
find . -name "*.zip" -exec sh -c 'unzip "$0" "$(dirname "$0")/$(basename "$0")"' {} \;
这给了我一堆(全屏)像这样的错误:
~>存档:./sun&sea/dugi_otok/970x250/SS4_970x250.zip
~>注意:文件名不匹配:./sun&sea/dugi_otok/970x250/SS4_970x250.zip
对于我的一生,我无法弄清楚这一点。
重新运行删除空格
如果我让它工作并且文件被解压缩,计划是从顶级目录banners/ 重新运行mv 命令,并再次用“_”替换空格。这会处理 .zip 文件的内容。
重新压缩
最后,我需要重新压缩这些新创建的子目录,命名为原始 .zip 文件,并覆盖现有的 .zip 文件(最初是解压缩的)。
基本上重新压缩这个:
~> banners/germany/active/dugi_otok/300x250/AC2_xx/(newly unzipped contents)
进入:
~> banners/germany/active/dugi_otok/300x250/AC2_xx.zip
对于造成的混乱,我深表歉意,但我找不到更好的方法来解释这一点。
【问题讨论】:
-
为什么要添加标签[baseline]?
标签: macos shell zsh oh-my-zsh baseline