汚れた古いハードドライブに写真をたくさんコピーしようとしていますが、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)$' ...
または、括弧を使用して複数の-name
OR-iname
述語をORすることもできます。たとえば、次のようになります。
find ... \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) ...
メモ:シェルがそれをサブシェルの要求として解釈しないように、角括弧をバックスラッシュにエスケープする必要があります-bash: syntax error near unexpected token
( ''
答え2
私はそうは思わない探すこれを行うのに適したツールは同期より良いかもしれませんが、すべてのファイルを1つのディレクトリに保存したい場合は、findを使用してください。ただし、コマンドラインから{}の周囲の一重引用符を削除する必要があります。これはリテラル{}ではなくファイル名です。