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