web-dev-qa-db-ja.com

bashスクリプトを使用してファイルを移動する

フォルダーを監視するbashスクリプトがあります。フォルダーに何かが追加された場合、スクリプトはすべてのコンテンツを監視フォルダーと一緒に定義された宛先に移動します。

問題:-スクリプトは、FileZilla(FTP)を介して監視フォルダー内のファイルを宛先フォルダーに移動できません。シェルプロンプトを使用してファイルを監視フォルダーに手動で移動すると、スクリプトは機能します。 FTPは、正しく機能しない唯一の形式です。

どのような問題が考えられますか?

スクリプトは次のとおりです。

inotifywait -m ~/folderA/fileA -e moved_to |
    while read path action file; do
        #echo "The file '$file' appeared in directory '$path' via '$action'"
        # do something with the file
    mv ~/folderA/fileA/* "/folderB/myNewDest"
    done
5
JakePember

最初に、inotifywait -e moved_toのみを対象ディレクトリに監視する移動を設定することにより、writtenまたはoverwrittenであったファイルの監視を省略します。そこに、たとえばFilezilla-e modify -e createをコマンドに追加するか、いくつかのinotifywaitイベントを無視する説得力のある理由がない限り、-e whateverオプションをすべて破棄します。

第二に、mv ~/folderA/fileA/* "/folderB/myNewDest"コマンドでfromファイルを引用しないと、愚かなファイル名に捕まるリスクがあります。 foo;rm -rf *。私はお勧めします

find ~/folderA/fileA/ -maxdepth 0 -type f -print0 | \
xargs -0 mv --target-directory=/folderB/myNewDest --

同じことをしますが、より安全です。

6
waltinator