Когда я создаю новый каталог, создаю файл скидки с цены с тем же именем в нем

Я хочу создать много каталогов (вручную, с помощью GUI).

Я затем захочу иметь в них документ скидки с цены с тем же именем как каталог, таким образом, этот вид дерева:

624466
└ 624466.md
626665
└ 626665.md

Как я могу автоматизировать .md создание файла?

2
задан 5 July 2015 в 20:16

3 ответа

Попробуйте это:

#!/bin/bash

for d in */; do
    touch $d/$d.md
done
1
ответ дан 2 December 2019 в 02:56

Это - то, что я закончил тем, что использовал.

while :
do
    for dir in *; do
        if [ "$dir" != "Untitled Folder" ];
        then

            if [ "$(ls "$dir")" = '' ];
            then

                touch "$dir/$dir.md"
            fi
        fi
    done
done

Благодаря @Grammageek, его исходное сообщение действительно помогло с для понятия цикла..

0
ответ дан 2 December 2019 в 02:56

Я использовал бы 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 каталог, раз так затем мы создали необходимый файл в нем.

2
ответ дан 2 December 2019 в 02:56

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

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