2010-11-29 6 views
0

これはおそらくUNIXユーザーの初心者ですが、私はオンラインで簡単な答えを見つけられませんでした。複数のサブディレクトリから選択したファイルを1つのディレクトリに統合する方法

私はサブディレクトリを持つディレクトリを持っています。これらのサブディレクトリの中には.movファイルがあります。すべてのムービーを1つのディレクトリに統合したい。ファイル名はデジタルカメラのファイルであり、ファイルの名前は段階的に指定されていますが、日々のフォルダに分割されているため、ファイルの名前の競合については心配する必要はありません。

これらのファイルをすべて取得して、ホームフォルダのディレクトリにコピー(あるいはそれ以上に移動)するUnix-fuとは何ですか?

ありがとうございました。

答えて

0
mv `find . -name "*.mov" | xargs` OUTPUTDIR/ 

更新 thkalaさんのコメントの後:

find . -iname "*.mov" | while read line; do mv "$line" OUTPUTDIR/; done 
+0

ファイルに名前に空白が含まれていれば、これは壊れませんか?それともあまりにも多くの場合は?それは私の答えのディレクトリオーバーラップ問題を解決しますが... – thkala

+0

@thkala、はい、それは、更新を参照してください – khachik

+0

ありがとう!あなたの最後の提案(read行中の ".iname" * .mov "| find cp" $ line "OUTPUT_DIR /; done)は完全に機能しました。それはまた私にとって、非専門家のUNIXユーザーにとって最も理解しやすいものです。私はxargsの解を理解しようとしましたが、xargsを読んでいましたが、そのコマンドの仕組みを理解していません。 – beibei2

1

これはいかがですか?

find "$SOURCE_DIRECTORY" -type f -name '*.mov' -exec mv '{}' "$TARGET_DIRECTORY" ';' 

ソースとターゲットのディレクトリが重複しない場合、これは正常に動作するはずです。

EDIT:多くのカメラの場合と同様に

ところで、あなたは拡張子(x.mov、y.Mov、Z.MOV)をケースに混在している場合、これは良いだろう。これは、照合時に大文字と小文字が区別されている-iname使用しています:

find "$SOURCE_DIRECTORY" -type f -iname '*.mov' -exec mv '{}' "$TARGET_DIRECTORY" ';' 

実際のディレクトリと$のSOURCE_DIRECTORYを置き換えてくださいと$ TARGET_DIRECTORY変数と重ならないこと(すなわち、ソースの下のどこかにいるターゲット)

EDIT 2:

PS:私はちょうどkhachikが彼の編集で、このいずれかをキャッチしていることに気づい

+0

@thkala理由はわかりませんが、コードが機能しない、または「* .mov」ファイルを削除する... – khachik

+0

@khachik $ SOURCE_DIRECTORYと$ TARGETDIRECTORYをあなたの実際のパスに置き換えましたか?ここでうまくいくので... – thkala

+0

@thkala SureL 'find。 -type f .... "OUT /" ';' OUTは既存のディレクトリです。 – khachik

0

あなたが変なファイル名(スペース、特殊文字)に対処する必要がある場合は、これを試してみてください。

$ cd <source parent directory> 
$ find -name '*.mov' -print0 | xargs -0 echo mv -v -t <target directory> 

は、「エコー」削除上記の実際の動きを行うには何が起こるかを印刷するのではなく、

"mv -v"は冗長な出力を、 "mv -t ..."はターゲットディレクトリを指定します(GNU固有の可能性もあります)。

"-print0"と "-0"は、奇妙なファイル名に対処する拡張機能です。 GNU以外のシステムでは、これらのオプションを削除する必要があるかもしれないので、改行で区切られたデータになります。これはまだファイル名にはスペースが付きますが、ファイル名には改行が付きません(はい、可能です)。

+0

-0のないxargsは、改行ではなく空白で引数を区切ることになると思います。少なくとも私のものはそうです... – thkala

関連する問題