我正在寻找一个可以检测文件何时进入特定文件夹的 bash 脚本。基本上,我最终想制作一个脚本,它可以检测文件何时进入我桌面上的某个文件夹(使用带有 wsl 的 Windows),在文件名末尾添加 .png(说来话长,只需要这样做),然后移动到我桌面上的另一个文件。我有一些东西可以重命名文件,因为一个朋友做了它,我们一起解决了它的问题
for i in /[directory here] ; do mv "$i" "$i.png" ; done
现在我只需要自动化它。我不想再打扰他了,因为他已经做了很多,而我对 Ubuntu 还不太了解,不知道该怎么做
答案1
您可以使用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
它将完成这项工作。
答案2
有一种方法可以检测文件夹是否包含以非 .png 为结尾的文件,然后通过在末尾添加“.png”来修复它。
只需创建可执行文件即可
touch pngchecker
使其可执行
chmod +x pngchecker
打开任何文件编辑器,例如 nano
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/
如果您需要脚本由某些事件触发(或作为 cron 作业或在系统启动时执行),将脚本添加到您的路径会非常方便。
通过这样做你甚至可以删除此部分
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 进入到你想要的任何文件夹后