
ディレクトリとすべてのサブディレクトリからファイル形式を移動するための良い方法は何ですか?
「/thisdirのすべての*.oggを/somedirに再帰的に移動する」と同じです。私はいくつか試しましたが、全力を尽くしました(まだそれほど良くありませんでした)。
find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;
各ファイル名の前に各行を返します。
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
答え1
次のように find を使用できます。パラメータそのために
find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir
上記のコマンドの-Iは、xargsに使用したい代替文字列を指示します(そうでない場合は、コマンドの最後に引数を追加します)。
または、
コマンドでmv
コマンドの後ろに「{}」を移動してみてください。
find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;
答え2
zshまたはbash 4で、すべての*.ogg
ファイルを次の場所に収集します/somedir
。
mv /thisdir/**/*.ogg /somedir
ディレクトリ階層を再現するには:(警告、ブラウザに直接入力してください)
rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir
答え3
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;
mvのパラメータを変更しました。
答え4
「ディレクトリが空ではありません。」エラーが発生します。この問題を解決するには、次を実行します。
find . -name 'node_modules' -type d -prune -exec mkdir -p ./another/dir/{} \; -exec mv -i {} ./NODE_MODULES/{} \;
これにより、ディレクトリ構造が保存されます。