Se essa lista de diretórios estiver armazenada delimitada por nova linha (uma em cada linha) em uma variável escalar $path
(não é um bom nome para uma variável, pois é especial em vários shells, mas não bash
), você d fazer:
IFS=$'\n' # split on newline
set -o noglob # disable glob
for dir in $path # invoke the split+glob operator ($path unquoted)
do
find "$dir" -name "$file*.zip" -type f -exec unzip -d "$dir/$file" {} \;
done
Se $path
foi uma matriz bash
em vez de path=(dir1 dir2...)
, altere o loop para
for dir in "${path[@]}"
Se estiver usando o GNU find
, você pode adicionar um -quit
no final ou o comando find
para permitir apenas um unzip
por diretório, a menos que você queira que todos os arquivos zip
sejam mesclado no mesmo diretório.
Observe que as opções devem ser colocadas antes dos argumentos não opcionais.