ファイルが特定のフォルダーに入ったときに検出するbashスクリプトを探しています。基本的に、ファイルがデスクトップの特定のフォルダーに入ったときに(wslでウィンドウを使用して)検出するスクリプトを作成し、ファイル名の最後に.pngを追加します(長い話、それが起こる必要があるだけです)。次に、デスクトップ上の別のファイルに移動します。友達が作ったファイルの名前を変更する何かがあり、トラブルシューティングに協力しました
for i in /[directory here] ; do mv "$i" "$i.png" ; done
今、私はそれを自動化する必要があるだけです。彼はすでに多くのことをしてきたので、私は彼にこれ以上迷惑をかけたくはありません。
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などのファイルエディタを開く
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した後、任意のフォルダー