У меня та же проблема, о которой я спрашивал. Переименуйте музыкальные файлы с отсутствующими расширениями файлов, и я нашел сценарий, предоставленный @Gilles очень образованным, но, к сожалению, он не работал так, как я ожидал. Я искал сценарий, который добавит расширение файла ко всем музыкальным файлам без расширения во всех подкаталогах на всех уровнях ниже «/ path / to / music / directory /». Предлагаемый параметр командной строки
/path/to/music/directory/{**/,}*
позволяет сценарию просматривать все файлы в подкаталогах на одном уровне ниже «/ path / to / music / directory /», но не на уровнях ниже этого. Какой параметр командной строки следует использовать для перемещения всех файлов на всех уровнях ниже «directory /»?
Также был бы оценен указатель на документацию для части
{**/,}*
.
Кстати, для тех, кто интересуется оригинальным ответом. Я обнаружил, что сценарий работает лучше после того, как я изменил строку
file -i "$@" |
на
file --mime-type "$@" |
(Если бы у меня был уровень привилегий, я бы дал это как комментарий в оригинальный ответ)
Я бы сделал что-то вроде этого
#! /bin/bash
[[ -d "$1" ]] || { echo "$1 not a directory, exiting..."; exit 1; }
find "$1" -type f | while read F; do
# do what you want with the "$F"
done
exit 0
, а затем вызовет скрипт через ./my_script <directory>