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

В 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'

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

Спасибо!!!

Благодарю.

1 ответ1

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 в конце, чтобы вернуть вас к исходной точке, если вы хотите

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .