ディレクトリとそのすべてのサブディレクトリからファイルの種類を移動する良い方法は何でしょうか?
「/ thisdirのすべての* .oggを/ somedirに再帰的に移動する」のように。私はいくつかのことを試しました。私の最善の努力は(まだそれほど素晴らしいものではありませんでした):
find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;
各ファイル名の前の各行に戻りました。
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
xargs で検索を使用できます
find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir
上記のコマンドの-Iは、使用する置換文字列をxargsに指示します(そうでない場合、コマンドの最後に引数が追加されます)。
OR
コマンドでは、mv
コマンドの後に「{}」を移動してみてください。
find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;
あなたはちょっとmvの引数を交換しました
Zshまたはbash 4では、すべての*.ogg
ファイルを/somedir
に収集するには:
mv /thisdir/**/*.ogg /somedir
ディレクトリ階層を再現したい場合:(警告、ブラウザに直接入力)
rsync -a --Prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir