unzip file.zip -d xxx
extraerá archivos al directorio xxx, y se creará xxx si no está allí. Puede consultar la página del manual para obtener más detalles.
La siguiente línea awk debería hacer el trabajo:
ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh
Ver la prueba abajo,
nota que eliminé |sh
al final, ya que mis zips son archivos falsos; Solo quiero mostrar aquí la línea de comando generada.
kent$ ls -l
total 0
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 001.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 002.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 003.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 004.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 005.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 006.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 007.zip
kent$ ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'
unzip 001.zip -d 001
unzip 002.zip -d 002
unzip 003.zip -d 003
unzip 004.zip -d 004
unzip 005.zip -d 005
unzip 006.zip -d 006
unzip 007.zip -d 007
"extraer aquí" es simplemente una característica de lo que sea unzip
envoltorio que está utilizando. unzip
solo extraerá lo que realmente está en el archivo. Probablemente no haya una forma más sencilla que un script de shell. Pero sed
, awk
etc. no son necesarios para esto si tiene un shell compatible con POSIX:
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
(NO DEBE escapar del *
o la expansión del nombre de ruta no tendrá lugar). Tenga en cuenta que si el archivo ZIP contiene un directorio, como los archivos de Eclipse (que siempre contienen eclipse/
), terminarías con ./eclipse*/eclipse/eclipse.ini
En todo caso. Agregar echo
antes de unzip
para un ensayo.
p7zip
, la versión de línea de comandos de 7zip hace el trabajo
7z x '*.zip' -o'*'
En debian y ubuntu, debe instalar p7zip-full
.