私が望むのは、単にこのコマンドを実行することだけです。
find . -name "*flac" -exec oggenc -q 7 {} \;
私が選択したフォルダにoggsを吐きます。~/vorbis
コマンドの最後に入れようとしましたが、述語エラーが発生しました。
find: possible unquoted pattern after predicate `-execdir'?
「Find Man Pages」を見て、{}
最後のページがファイルを探している-q 7
ことを知っていますflac
。だからこれが私をジレンマに陥る。
選択したフォルダにoggsを出力するためにコマンドに何を追加する必要があるのかを知っている人はいますか?
読んで助けてくれてありがとう。
ところで、私は試しました:
find . -name "*flac" -exec oggenc -q 7 ~/vorbis {} \;
しかし、これはflacがあるフォルダにoggsだけを吐き出します。~/vorbis
フォルダではありません。フォルダ名と構造を保持して、選択したフォルダ(~/vorbis
)に出力しようとしています。私は完全なスクリプトを要求するものではありません。私は単に私が達成したいことをどのように達成できるかを誰かに説明するように頼むだけです。
ありがとうございます!
答え1
サブシェルを使用すると、ファイル名を変更して別のコマンドを実行して、出力が目的の場所に移動することを確認できます。
mkdir -p ~/vorbis
find . -name "*flac" -exec sh -c 'oggenc -q 7 "$1" -o ~/vorbis/"${1%.*}".ogg' _ {} \;
...flacモジュールで開く: "./summerbreezes.flac"を "/home/k/vorbis/./summerbreezes.ogg"でエンコードされたFLACファイルリーダー(品質7.00 [99.0%] [0m00s残り] -
エンコードファイル "/home/k/vorbis/./summerbreezes.ogg" を完成させてください。
ファイル長:1m 11.0s経過時間:0m 01.3s速度:55.0760平均ビットレート:198.3kb / s
ls ~/vorbis
alsowe.ogg christmascard.ogg love1.ogg themanyone2.ogg yourmom.ogg
An_Open_Door.ogg GEDC4177.ogg summerbreezes.ogg winning.ogg
答え2
パスを気にしない場合は、トリックmyfile.flac
を使用してすべての-execdir
パスを1つのディレクトリに配置できます。
find
-execdir
コマンドを実行する前に、ファイルのディレクトリが変更されます。{}
に変更されることもありました./
。
find . -name '*.flac' -execdir oggenc -q 7 -o ~/vorbis/{}.ogg {} \;
したがって、この例では、対応する項目が見つかると次のように./path/to/myfile.flac
実行されます。
cd ./path/to
oggenc -q 7 -o ~/vorbis/./myfile.flac.ogg ./myfile.flac
(メモ:少なくともGNU findutilsの
./myfile.flac
場合本物相対パスではなく、見つかったファイルやシンボリックリンクへのフルパスですが、OPの質問には重要ではありません.)