Создать сценарий Bash для автоматического размещения файлов в папке одно и то же имя?

Я очень новый, чтобы написать сценарии Linux, но я пытаюсь сделать что-то довольно сложное. Я пытаюсь написать программу, которая может читать часть имени файла файла и поместить его в папку с именем то же самое. Например, если я помещу файл в каталог, называемый «PO 123.PDF», он автоматически перешел бы в папку «123». Из того, что я понимаю, я могу использовать Inotify-Tools, чтобы посмотреть папку для новых файлов, но я не уверен, как использовать синтаксис. Кто-нибудь будет знать, где начать? Спасибо!

0
задан 2 March 2021 в 18:56

1 ответ

С помощью inotify-tools:

inotifywait -m . -e create |
  while read path action file;
  do
    d="${file##* }"
    d="${d%%.*}"
    mkdir -p "$d"
    mv "$file" "$d/" 2>/dev/null
  done

Выполните описанное выше из каталога, содержащего ваши файлы.


В bash:

while true
do
  for f in *
  do
    d="${f##* }"
    d="${d%%.*}"
    mkdir -p "$d"
    echo mv "$f" "$d/" 2>/dev/null
  done
  sleep 5
done

Сохраните вышеуказанный код в файле на одном уровне выше каталога ваших файлов и сделайте его исполняемым, а затем запустите его из каталога, содержащего ваши файлы, как bash ../ScriptFileName. Удалите echo, когда будете удовлетворены результатами выполнения фактического перемещения файла.

Вы можете изменить количество секунд после сна с сна 5 на, например, сна 60 , чтобы заставить скрипт работать каждую минуту, а не каждые 5 секунд. См.

См. этот ответ для дополнительной информации.

2
ответ дан 18 March 2021 в 23:29

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

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