Я хочу создать много каталогов (вручную, с помощью GUI).
Я затем захочу иметь в них документ скидки с цены с тем же именем как каталог, таким образом, этот вид дерева:
624466
└ 624466.md
626665
└ 626665.md
Как я могу автоматизировать .md
создание файла?
Попробуйте это:
#!/bin/bash
for d in */; do
touch $d/$d.md
done
Это - то, что я закончил тем, что использовал.
while :
do
for dir in *; do
if [ "$dir" != "Untitled Folder" ];
then
if [ "$(ls "$dir")" = '' ];
then
touch "$dir/$dir.md"
fi
fi
done
done
Благодаря @Grammageek, его исходное сообщение действительно помогло с для понятия цикла..
Я использовал бы inotify
API, обеспеченный ядром для слежения за развитием событий файловой системы. Нет никакой потребности в неопределенном while
цикл, можно использовать инструмент, который использует интерфейс, обеспеченный ядром для проверки на любые изменения на любом файле.
Один из инструментов, который использует inotify
inotifywait
. От man inotifywait
:
inotifywait efficiently waits for changes to files using Linux's inotify interface.
Это не установлено по умолчанию, это - часть inotify-tools
пакет. Можно установить его:
sudo apt-get install inotify-tools
Сценарий, который я сопровождаю, может принять форму:
#!/bin/bash
while IFS= read -r line; do
parent="${line%% *}"
child="${line##* }"
new="${parent}${child}"
[[ -d $new ]] && touch "$new"/"$child".md
done < <(inotifywait --quiet --monitor --event CREATE,ISDIR /home/tim/test)
Можно отправить его в фон:
./dir_event.sh &
Или, возможно, используйте nohup
или disown
если Вы хотите:
nohup ./dir_event.sh &
inotifywait --quiet --monitor --event CREATE,ISDIR /home/tim/test
команда должна следить за развитием событий файловой системы на каталоге /home/tim/test
, мы только интересуемся CREATE
и ISDIR
события. Мы сохраняем (как line
) и затем управляя каждой новой строкой, указывающей на соответствующее событие, как они происходят. Проверьте man inotifywait
получить больше идеи.
parent
будет содержать каталог, который мы контролируем /home/tim/test
в этом случае и child
будет содержать недавно созданный каталог/файл. Оба достигаются при помощи bash
расширение параметра.
new
добавление двух для получения полного пути к недавно созданной записи. Как CREATE
событие приведет к созданию файла также, мы должны удостовериться это new
каталог.
[[ -d $new ]]
проверки, если new
каталог, раз так затем мы создали необходимый файл в нем.