方法1:グラフィカルファイルブラウザーでツリービューを使用する
私はあなたの実際の目標は各ファイルの選択をすることであり、厳密に言うとプロンプトが出されることではないと思います。ただし、ターミナル内の各ファイルについてプロンプトを表示したい場合は、以下の方法2を参照してください。
ほとんどのグラフィカルファイルブラウザはツリービューをサポートしており、ディレクトリ階層の複数のレベルをまとめて表示できます。個別に、またはファイルを選択してから選択全体を操作することにより、このビューからファイルをコピーまたは移動できます。これは、複数のフォルダのファイルでも機能します。
一部のファイルブラウザでは、ツリービューを有効にするには、[設定]メニューに移動する必要があります。MATEファイルブラウザーのCajaでは、リストビューで常に有効になっています。[表示]→[リスト]をクリックして(またはCtrl+を押して2)、リストビューに切り替えます。各ディレクトリの左側には、右向きの小さな三角形があり、展開できることを示しています。フォルダを展開するには、その三角形をクリックするか→、フォルダが選択されているときに(右矢印)キーを押します。この例では、すべてを1つずつ選択し、それらを一度にドラッグして宛先を指定しています。
ソースと宛先が同じドライブ上にあると想定すると、ドラッグはデフォルトで移動します。代わりにコピーしたい場合は、Ctrlキーを押したままにします。
理論的には、この方法を使用すると、ほとんどのファイルブラウザー(Caja を含む)がバッチアクションを含む最近のアクションを元に戻すCtrl+ Zをサポートするため、間違いを簡単に修正できます。しかし、私はそれと運が混ざっています。時々、ファイルは間違ったフォルダに戻ります。
良いニュースは、ほとんどがテキストドキュメントで作業しているように見えることです。これは、サイズが小さい傾向があるため、tar
手間をかけずに最初に追加のバックアップを作成できます。使用する方法に関係なく、それを行うことをお勧めします。
方法2:アクションfind
付きのコマンド-ok
find
ファイルを検索し、-exec
その-execdir
アクションを使用して任意の外部コマンドにパスを渡すのが一般的な使用方法です。ただし、コマンドを実行するたびに、その前にプロンプトfind
が表示されます。ターミナルで各ファイルについてプロンプトを表示したい場合は、これが適切な方法だと思います。-ok
-okdir
上記と同じ効果を生成するために完了すると、次のようになります。
ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y
Texts
ソースディレクトリ(必要な.
場合のみcd
)とGlorious Destination Folder
実際の宛先ディレクトリに置き換えます。
これにより、ファイルごとに1つのコマンドが実行されます。異なり、-exec
そして-execdir
、-ok
そして-okdir
サポートしていない+
の代わりに、\;
コマンドの同じ呼び出しで複数FOUNDパスを渡します。したがって、の形式を使用する必要はありません。とにかく、そうすることをお勧めしますが、一般的に、特にこの状況の両方で、プロンプトはプロンプトが表示されているコマンドのように見えます。-t dest
mv
find
そのコマンドが記述されているときに、find
最終的に通常のファイルを指すシンボリックリンクに遭遇した場合、そのリンク(ターゲットではなくリンク)は無視されるのではなく移動されます。通常のファイルを1つだけ操作したい場合は、の-type f
代わりに使用してください-xtype f
。
あなたには、これを行うことができますscript
、あなたがミスをした場合に何が起こったかを把握できるようにしたセッション。しかし、繰り返しになりますが、バックアップがない理由はありません。
方法3:マニフェストを生成して編集する
少なくとも、ファイルの名前に改行が含まれていない限り、簡単なfind
コマンドを使用してマニフェストを生成することから始めます。このファイルには、(この場合は)興味があるファイルの名前がリストされています。 :
find Texts -xtype f >manifest
manifest
検討中のファイルをリストするファイルの名前を任意の名前に置き換えます(それに応じて残りの方向を調整します)。
上記のように、置き換えるTexts
ことができ、あなたの実際のソースディレクトリ、と.
あなたがしている場合cd
、それをD」を。ただし、Texts
(それはだ場合を含む相対パスである.
)そして、次のことを行う必要があり、同じ場所にあることを確認してくださいあなたが実際に移動を実行するときに、後で。
そのfind
コマンドを実行した後manifest
、テキストエディターで開きます。これは可能性がありnano
、vim
、emacs
、gedit
、pluma
、エディタでは、などコメントアウト名前のファイルは、あなたがいることを行いない配置することにより、移動したい#
それらの初めに。一部のエディターは、ファイルがコメント付きであることがわかっている形式であると認識しない場合でも、これらの行を異なる方法で強調表示します。ただし、ほとんどの場合はそうではありません。この方法で実行することをお勧めする本当の理由は、人間として、構成ファイル(およびおそらくソースコード)の行をコメントアウトした経験がある可能性が高いためです。これは、移動したい行をマークするよりも直感的で、エラーが発生しにくいと思います。
もちろん、代わりに、移動したくないファイルの行を削除することもできます。コメントアウトすることの利点は、後で何をしたかが明らかになることです。
私の例では、編集後のファイルの内容は次のようになります。
Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm
次に、コメント化された行をフィルターで除外しgrep
、結果をパイプして次の行xargs
に渡しますmv
。
grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'
上記のようGlorious Destination Folder
に、実際の宛先の名前に置き換えます。それでおしまい; ファイルが移動されます。もちろん、echo
前mv
に書いて、必要に応じて最初に実行されるコマンドを確認することもできます。
このコマンドが機能する方法は次のとおりです。
grep
以下からのコマンドの出力行manifest
ことない(-v
)(起動^
オプション(と)*
)空白(\s
リテラルが続く)#
文字。-P
フラグは(可能にする正規表現の方言としてPCREを選択し\s
、私は伝統的なよりも読みやすい検討しています[[:space:]]
)。
xargs
コマンド(の出力であり、その入力を分割grep
(改行で終了フィールドに)-d '\n'
、コマンドの終了時に別の引数として(終端改行せず)は、各フィールドを貼り付け、)mv -t 'Glorious Destination Folder'
それが実行され、。
-ok
IMHOのベストアンサー