web-dev-qa-db-ja.com

フォルダー内のファイルの名前をリアルタイムで変更する

フォルダー内のファイルの作成時に名前を変更する方法はありますか?

私は数秒ごとにcronジョブを実行して次のようなことをすることができます...

find . -name "file.*" -exec sh -c 'echo mv "$1" "$(echo "$1" | sed s/file.*\$/"file-$(date).*"/)"' _ {} \;

しかし、これはサイクルの面で本当に扱いにくいようです...

3
knishka

それで、 incron を使用して、Sudo apt-get install incronを実行して設定します。

私の目標:エイリアス(sendtodropbox.comアプリ)に送信された画像が添付された電子メールが、ブログの写真リポジトリに自動的にコピーされ、投稿できるようにします。

次に、簡単なbashスクリプトを作成しました。

#!/bin/bash
ls photo.JPG | while read a; do mv $a "$(echo "$a" | sed s/photo.JPG/"photo$(date +%a%b%d%H%M).jpg"/)"; done
mv photo* ~/Dropbox/Attachments /<photo repo>/

スクリプトを~/に配置し、/etc/incron.allowファイルを編集してユーザー名を含めます。これらのスクリプトとファイルはすべて私のホームディレクトリにあるためです。次に、incrontab -eを実行して、incron構成ファイルを編集する必要があります。

ここでは~/Dropbox/Attachments/ IN_MOVED_TO ~/script.shを使用しました(DropboxがファイルをDropboxフォルダーに配置するアクションは移動と見なされるため、IN_MOVED_TOを使用しました)

Dropboxに携帯電話から写真を電子メールで送信すると、これは瞬時に機能します。 rootとユーザー名の両方を使用してincronをテストし、それが機能することを確認しました。ユーザーとしての最初のテスト:incrontab -e add the config:~/ IN_CREATE touch ~/test、次に~/に移動します。 >fooを実行すると、testが表示されます。

1
knishka