Lau*_*nol 5 command-line bash zip rename
目标是解压缩许多 zip 文件并将生成的文件重命名为原始存档名称。
给定一个包含许多 zip 文件的文件夹,其中大多数包含一个名为 的文件bla.txt,但当然也有一些例外。众所周知,每个文件都有一个文件,即一个txt文件。
./zips/
a.zip - contains bla.txt
b.zip - contains bla.txt
c.zip - contains somethingelse.txt
d.zip - contains bla.txt
... - ...
Run Code Online (Sandbox Code Playgroud)
输出应该是
./zips/
a.txt
b.txt
c.txt
d.txt
...
Run Code Online (Sandbox Code Playgroud)
当前最佳镜头,它提取了所有内容,但给我留下了大量文件夹:
for z in *.zip; do unzip $z -d $(echo 'dir_'$z); done
Run Code Online (Sandbox Code Playgroud)
也许像
for z in *.zip; do unzip $z; mv 'content_name.txt' $z; done
Run Code Online (Sandbox Code Playgroud)
但是内容名称是如何获得的呢?
您可以继续这个-d想法,只需将任何提取的文件重命名为所需的“zip 名称减去 zip 加 txt”:
mkdir tmp
for f in *.zip; do unzip "$f" -d tmp && mv tmp/* "${f%.zip}.txt"; done
rmdir tmp
Run Code Online (Sandbox Code Playgroud)
或者,您可以将 unzip 的输出通过管道传输到适当命名的文件中:
for f in *.zip; do unzip -p "$f" > "${f%.zip}.txt"; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27697 次 |
| 最近记录: |