1

基本的に、ロックされているディレクトリ内のすべてのファイルに文字列を追加したいと考えています。mvファイル名をコマンドに渡すのに問題があります。

find . -flags uchg -exec chflags nouchg "{}" | mv "{}" "{}"_LOCK \;

上記のコードは明らかに機能しませんが、私がやろうとしていることを説明していると思います。

私は2つの問題に直面しています:

  1. ファイル名の末尾の拡張子 ( 001_LOCK.jpg) の前に文字列を追加します。
  2. findコマンドの出力を 2 回渡します。ファイルがロックされている間はファイルの名前を変更できないため、これを行う必要があります。したがって、ファイルのロックを解除してから名前を変更する必要があります。

誰にもアイデアはありますか?

4

1 に答える 1

2

これは良いスタートになるはずです。

chflags を mv にパイプしないと仮定しますが、これは意味がありませんが、chflags が失敗した場合はファイルの名前を変更するだけです。拡張機能の処理はよりトリッキーですが、確かに実行可能です。

find . -flags uchg -exec sh -c "chflags nouchg \$0 || mv \$0 \$0_LOCK" {} \;

編集:chflagsが成功した場合の名前の変更:

find . -flags uchg -exec sh -c "chflags nouchg \$0 && mv \$0 \$0_LOCK" {} \;
于 2011-05-12T09:41:17.087 に答える