Я ищу сценарий удара, который обнаружит, когда файл введет определенную папку. В основном я хочу в конечном счете сделать сценарий, который обнаружит, когда файл введет определенную папку в мой рабочий стол (использование окон с wsl), добавьте .png в конец имени файла (длинная история, просто нуждайтесь в этом для случая), и затем переместитесь в другой файл на моем рабочем столе. У меня есть что-то для переименования файлов, поскольку друг сделал его, и мы сотрудничали для поиска и устранения неисправностей его
for i in /[directory here] ; do mv "$i" "$i.png" ; done
Теперь я просто должен автоматизировать его. Я не хочу беспокоить его больше, так как он уже сделал так много, и я слишком плохо знаком с Ubuntu для понимания точно, что сделать
Можно использовать inotify-tools
Для установки его выполните следующую команду в терминале:
sudo apt install inotify-tools
Для использования его для служения цели выполните эти шаги:
Создайте и отредактируйте файл сценария в своем корневом каталоге путем выполнения следующей команды в терминале:
nano ~/File_Monitor.sh
Скопируйте и вставьте следующий код в редактора, заменяющего 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
Сохраните файл сценария и выйдите, редактор путем нажатия Ctrl + X затем нажимают Y.
Сделайте исполняемый файл файла сценария путем выполнения следующей команды в терминале:
chmod +x ~/File_Monitor.sh
Запустите скрипт путем выполнения следующей команды в терминале:
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
Это сделает задание.
Всего наилучшего
существует способ обнаружить, содержит ли папка файл, который не имеет .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 к там