Разархивируйте несколько zip и переименуйте автоматически файлы с тем же именем, если это необходимо

0

У меня есть несколько Zip-файлов в папке, и я хотел бы разархивировать все, но автоматически переименовывать папки или файлы с одинаковыми именами, например:

В ZIP_folder_1.zip а также ZIP_folder_2.zip у меня есть одна папка под названием my_name, если я разархивирую все с помощью команды выше, командная строка спросит, хочу ли я переименовать ее, поэтому, если у меня есть 3k папок с таким именем, я сойду с ума.

Я пытаюсь использовать:

find . -type f -name "*.zip" -exec unzip {} -d {}.contents/;

Но я вижу

find: missing argument to `-exec'

Другой момент: я могу передать папку назначения?

Спасибо!!!

Благодарю.

FXux
источник

Ответы:

0

Аргумент к -exec как правило, материал между -exec и \;

Я бы сначала попытался поставить пробел между {}.contents и \; но я не проверял, чтобы увидеть, что может происходить

с другой стороны, вероятно, легче изменить начальную точку для find чем вмешиваться в -exec пункт. Я предлагаю что-то вроде ниже, напоминая, что $OLDPWD старый рабочий каталог до последнего cd (по крайней мере в bash это есть, в tsch это есть $owd )

cd targetdirectory; find $OLDPWD -type f -name "*.zip" -exec unzip {} -d {}.contents /;

Вы можете украсить его, добавив ; cd $OLDPWD в конце, чтобы вернуть вас к исходной точке, если вы хотели

infixed
источник