Quiero iterar entre los subdirectorios de mi ubicación actual y gzip cada archivo por separado. Para comprimir los archivos en un directorio, utilizoCómo descomprimir todos los archivos en todos los subdirectorios en bash
for file in *; do gzip "$file"; done
pero esto sólo puede trabajar en el directorio actual y no los subdirectorios del directorio actual. ¿Cómo puedo reescribir las declaraciones anteriores para que también comprima los archivos en todos los subdirectorios?
Su última oración es una desinformación común. Buscar sabe dónde se inicia un nombre de archivo y dónde termina. En sí, no tiene ningún problema con espacios en blanco o linebreaks y otras cosas divertidas. Entonces '-exec gzip {}' llama a gzip con un solo nombre de archivo, y como no se invoca ningún shell intermedio, lo que podría interpretar un espacio en blanco como delimitador, gzip recibirá el nombre completo del archivo. La sugerencia en la página de manual de find parece obsoleta y significa: su caparazón podría intentar interpretar {} antes de pasarla para encontrarla, pero no se ha visto tal caparazón [durante años] (http://unix.stackexchange.com/q/ 8647/4485). –
Aprende algo nuevo todos los días. Gracias por la lección! –
+1 para los archivos de exclusión * .gz – GuruM