特定のディレクトリにファイルを配置すると、自動的にファイル名を変更できますか?
たとえば、「dir0」というディレクトリがあります。 「file1」というファイルを「dir0」に移動またはコピーします。その後、「file1」の名前を「file1_{現在のタイムスタンプ}」に変更する必要があります。
ベストアンサー1
通常、ファイルを作成または移動するときにプログラムでこれを実行しますが、ファイルを作成またはフォルダに移動するたびにスクリプトをトリガーすることができますincron
。次incrontab -e
の行とパスを使用してタブファイルを設定します。
/path/to/dir0 IN_MOVED_TO,IN_CREATE /path/to/script $@/$#
次に、/path/to/script
クイック名前変更操作を作成します。このスクリプトは作成した新しいファイルに対しても呼び出されるため、ファイル名が正しいことをテストする必要があります。この例では、ファイル名の最後の部分として、エポック以降の10桁の数がファイル名に含まれていることを確認し、そうでない場合はそれを追加します。
#!/bin/bash
echo $1 | grep -qx '.*_[0-9]\{10\}' || mv "$1" "$1_$(date +%s)"
編集する:最初にこの記事を書いたときに時間が足りなかったので、bash
ここでパターンマッチングをする方法を知ることができませんでした。ザイルズは指摘した。grepを呼び出さずにbashでERE一致を使用してこれを行うには:
#!/bin/bash
[[ ! ( $1 =~ _[0-9]{10}$ ) ]] && mv "$1" "$1_$(date +%s)"