回答:
askubuntu-QAにはすばらしい答えがあります。
これを行うには、ターミナルを開き、次のコマンドを実行します。
mv -v ~/Downloads/* ~/Videos/すべてのファイルとフォルダーをダウンロードフォルダーからビデオフォルダーに移動します。
フォルダではなくすべてのファイルを移動するには:
ただし、(フォルダーではなく)すべてのファイルをダウンロードフォルダーからビデオフォルダーに移動する場合は、このコマンドを使用します
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videosサブフォルダーからではなく、ダウンロードフォルダーからのみファイルを移動するには:
Downloadsフォルダーからすべてのファイルを移動し、Downloadフォルダー内のフォルダー内のファイルは移動しない場合は、次のコマンドを使用します。
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videosここで、
-maxdepthoption1は、findコマンドで指定されたディレクトリのみを検索する方法を 指定します。あなたは使用して試すことができ2、3また、テストに。詳細な説明については、Ubuntu findのマンページを参照してください。
find /src/dir -type f -exec mv --backup=numbered -t /dst/dir {} +
このコマンドは、/src/dir(すべてのサブディレクトリを含む)の下にあるすべての通常のファイルを検索し/dst/dir、commandを使用してそれらに移動しますmv。ディレクトリを自分のものに置き換えるだけです。同じ名前のファイルは自動的に名前が変更されます。
MP3ファイルのみを移動する-iname "*.mp3"場合は、findコマンドの後にオプションを追加します-type f。
c0devの応答の2番目のコマンドのみが質問に回答します。以下は、この返信との比較です。ポイント3と4は、ここと同じ方法で他の返信で解決できます。
mvソリューションは、またはの-exec +ような追加のコマンドを呼び出して、ファイル名を2回渡す必要はありません。xargsparallel--backup=numbered。残念ながら、接尾辞のようなこれらのバックアップ~3~は、デフォルトで管理されるほとんどのファイルで非表示になります。残念ながらmv、接尾辞の変更は許可されていませんが、追加のコマンドで簡単に後処理できます。これはGNU拡張機能です。-print0 -exec command {} +、IEEE Std 1003.1(POSIX)、ISO / IEC 9945およびThe Single UNIX Specification標準の一部です。したがって、より移植性が高いはずです。参照IEEE STD 1003.1、2004 Editionの、IEEE STD 1003.1、2013年版および0000243: "検索"に-print0を追加します。しかし、とにかく必要な-t切り替えmvはGNU拡張であるため、POSIXシステム間でコマンド全体を移植することはできません。注:この場合find、-(find現時点ではそのような実装はわかりません)で始まるパスを生成でき{}ます--。オプションの最後のインジケーターを前に付ける必要があります。
{}は最後の引数としてでなければならないようです。修正しました。
残念ながら、マークされた解決策についてコメントするほどの評判はありません。しかし、私が遭遇した問題について他の人に警告したかったのです。かなりアマチュアです。ただし、いくつかのことをしているとき、最初は思い浮かばないかもしれません。うまくいけば、他の人の助けになるでしょう。
コマンドの開始後に、次のメッセージのバリエーションが提供されました。その後、コマンドは複数のファイルを作成します。
mv: `/data/share/docs/src/dir/filename.ext' and `/data/share/docs/src/dst/filename.ext' are the same file
/src親である/dst(例えば/src/../dst/)。
より良い解決策があるかもしれませんが、ファイルを自分の外部の一時ディレクトリに/src移動し、コマンドを再実行して、目的の/src/../dstディレクトリに戻しました。
私のワンライナー-これはMacでも動作しますが、* nixでも動作するはずです。親ディレクトリから開始します。
# Move files to parent and delete empty folders
find . -not -type d -print0 | xargs -0J % mv -f % . ; find . -type d -depth -print0 | xargs -0 rm -rf
最初の部分は、すべてをすべてのサブフォルダーから、コマンドを開始する実際のフォルダーに移動します。2番目の部分では、サブディレクトリが空であるかどうかを確認し(これで:-)、サブディレクトリを削除して、サブディレクトリなしですべてを取得できるようにします。