Какая командная строка надежно проходит несколько уровней каталогов

У меня та же проблема, о которой я спрашивал. Переименуйте музыкальные файлы с отсутствующими расширениями файлов, и я нашел сценарий, предоставленный @Gilles очень образованным, но, к сожалению, он не работал так, как я ожидал. Я искал сценарий, который добавит расширение файла ко всем музыкальным файлам без расширения во всех подкаталогах на всех уровнях ниже «/ path / to / music / directory /». Предлагаемый параметр командной строки

/path/to/music/directory/{**/,}*

позволяет сценарию просматривать все файлы в подкаталогах на одном уровне ниже «/ path / to / music / directory /», но не на уровнях ниже этого. Какой параметр командной строки следует использовать для перемещения всех файлов на всех уровнях ниже «directory /»?

Также был бы оценен указатель на документацию для части

{**/,}* 

.

Кстати, для тех, кто интересуется оригинальным ответом. Я обнаружил, что сценарий работает лучше после того, как я изменил строку

file -i "$@" |

на

file --mime-type "$@" | 

(Если бы у меня был уровень привилегий, я бы дал это как комментарий в оригинальный ответ)

1
задан 13 April 2017 в 15:24

1 ответ

Я бы сделал что-то вроде этого

#! /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>

1
ответ дан 25 May 2018 в 19:34

Другие вопросы по тегам:

Похожие вопросы: