Вы смотрели ffmpeg? Это инструмент, который может конвертировать огромное количество мультимедийных кодеков в другие кодеки.
Ваша команда find
отлично работает у меня с GNU find
. Если это не работает в вашей системе, попробуйте:
find . -maxdepth 1 -type d -exec sh -c 'rm -r "../$1"' Rm {} \;
Этот подход использует {}
как независимый аргумент, не измененный ../
. Мы передаем значение {}
в оболочку, и оболочка применяет ../
.
Примечания:
Порядок -maxdepth 1
и -типа d
был перевернут, поскольку man find
рекомендует глобальные параметры, например -maxdepth
, должен быть определен перед позиционными параметрами, такими как -type
.
Команда оболочки должна быть заключена в одинарные кавычки: 'rm -r "../$1"'
. Если бы он был заключен в двойные кавычки, исходная оболочка заменила бы свое значение на $ 1
, а имя каталога, найденное с помощью find
, было бы проигнорировано. Нам нужен вызываемый sh
для выполнения замены. Строка «../$ 1»
заключена в двойные кавычки, чтобы защитить имя каталога, $ 1
, от разделения слов и раскрытия имени пути.
Оболочка присваивает строке Rm
$ 0
. Это не используется, если нет сообщения об ошибке. Следовательно, можно использовать любую строку.
С zsh
:
cd /home/michal &&
rm -rf -- Music/*(/D:t)
Квалификатор /
glob предназначен для выбора только каталогов, D
для включения скрытых и : t Модификатор
, как и в раскрытии истории, заключается в выборе только хвоста (имя файла без его части каталога).
С любой оболочкой, подобной Bourne:
cd /home/michal/Music &&
set -- */ &&
cd .. &&
rm -rf -- "$@"
Одно отличие от приведенного выше состоит в том, что она также включает символические ссылки на каталоги (и удаляет содержимое target вместо самой ссылки).