Строка Bash для показа, когда содержание папки обновляет

Я ищу сценарий удара, который обнаружит, когда файл введет определенную папку. В основном я хочу в конечном счете сделать сценарий, который обнаружит, когда файл введет определенную папку в мой рабочий стол (использование окон с wsl), добавьте .png в конец имени файла (длинная история, просто нуждайтесь в этом для случая), и затем переместитесь в другой файл на моем рабочем столе. У меня есть что-то для переименования файлов, поскольку друг сделал его, и мы сотрудничали для поиска и устранения неисправностей его

for i in /[directory here] ; do mv "$i" "$i.png" ; done

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

2
задан 8 January 2020 в 03:28

2 ответа

Можно использовать inotify-tools

Для установки его выполните следующую команду в терминале:

sudo apt install inotify-tools

Для использования его для служения цели выполните эти шаги:

  1. Создайте и отредактируйте файл сценария в своем корневом каталоге путем выполнения следующей команды в терминале:

    nano ~/File_Monitor.sh

  2. Скопируйте и вставьте следующий код в редактора, заменяющего PATH_TO_DIRECTORY с полным путем каталога Вы хотите контролировать:

#!/bin/bash
inotifywait -m PATH_TO_DIRECTORY -e create |
    while read path action file;
        do
                echo "$path$file was created"
                mv "$path$file" "$path$file.png"
                echo "and renamed to $path$file.png"
        done

  1. Сохраните файл сценария и выйдите, редактор путем нажатия Ctrl + X затем нажимают Y.

  2. Сделайте исполняемый файл файла сценария путем выполнения следующей команды в терминале:

    chmod +x ~/File_Monitor.sh

  3. Запустите скрипт путем выполнения следующей команды в терминале:

    bash ~/File_Monitor.sh

Сделанный, все новые файлы, добавленные к контролируемому каталогу, будут переименованы к Original_File_Name.png.


Уведомление:

Если Вы не можете добраться inotify-tools установленный по любой причине, можно заменить код на шаге 2 со следующим кодом, также изменяющимся PATH_TO_DIRECTORY с полным путем каталога Вы хотите контролировать:

#!/bin/bash

while true
do
       sleep 1
       find PATH_TO_DIRECTORY -type f ! -name "*.*" -exec mv {} {}.png \;
done

Это сделает задание.

Всего наилучшего

4
ответ дан 19 January 2020 в 09:16

существует способ обнаружить, содержит ли папка файл, который не имеет .png как окончания и затем зафиксировать его путем добавления ".png" в конец.

Просто создайте исполняемый файл

touch pngchecker

сделайте это исполняемым файлом

chmod +x pngchecker

откройте любой редактор файлов, например, нано

nano pngchecker

и затем введите следующий код с любым текстовым редактором.

#!/bin/bash

testForEnding () {
    echo $file | grep -qE ".png"
    if [ $? == 0 ]; then
        echo "$file has right ending"
    else
        echo "$file has wrong ending -- WROOONGGG"
        mv $file $file.png
        echo " -> fixed!"
    fi
}

if [ -z $@ ]; then         # check whether a path/to/png_folder is given
    echo "Please provide a path/to/png_folder"
    exit 1
fi

for file in $@* ; do testForEnding ; done

В конце просто необходимо ввести

./pngchecker path/to/file/ 

При необходимости в сценарии, который будет инициирован некоторым событием (или выполняемый как задание крона, или при начальной загрузке системы) могло быть довольно удобно добавить сценарий к пути.

Путем выполнения этого Вы могли даже удалить эту часть

if [ -z $@ ]; then         # check whether a path/to/png_folder is given
    echo "Please provide a path/to/png_folder"
    exit 1
fi

И просто выполненный команда

pngchecker

в любой папке Вы хотите после луга CD к там

0
ответ дан 19 January 2020 в 09:16

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

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