複数の基準でbabun Findを使用して別のハードドライブにコピーする

複数の基準でbabun Findを使用して別のハードドライブにコピーする

汚れた古いハードドライブに写真をたくさんコピーしようとしていますが、Windowsファイルエクスプローラで開くことができず(尋ねないでください)、あなたの愛する祖母を助けるためにこれを行う必要があります。 Babun(素晴らしいWindowsシェル)を使ってナビゲートできます。

これまで、私は次のコマンドを試しました。

$ find /cygdrive/h/Documents\ and\ Settings -name '*.jpeg|png|JPEG' -exec cp '{}' /cygdrive/f/tof \;

$ find /cygdrive/h/Documents\ and\ Settings -name '*.(jpeg|png|JPEG)' -exec cp '{}' /cygdrive/f/tof \;

結果はありません。何か抜けましたか?

答え1

find's -name述語は正規表現ではなくglobを使用します。

で正規表現を使用するには(または大文字と小文字を区別しない)をfind使用してください。たとえば、-regex-iregex

find ... -regextype egrep -iregex '.*\.(jpe?g|png)$' ...

または、括弧を使用して複数の-nameOR-iname述語をORすることもできます。たとえば、次のようになります。

find ... \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) ...

メモ:シェルがそれをサブシェルの要求として解釈しないように、角括弧をバックスラッシュにエスケープする必要があります-bash: syntax error near unexpected token( ''

答え2

私はそうは思わない探すこれを行うのに適したツールは同期より良いかもしれませんが、すべてのファイルを1つのディレクトリに保存したい場合は、findを使用してください。ただし、コマンドラインから{}の周囲の一重引用符を削除する必要があります。これはリテラル{}ではなくファイル名です。

関連情報