端末コマンドを元に戻す方法はありますか?

端末コマンドを元に戻す方法はありますか?

次のコマンドを使用してディレクトリ全体を別のディレクトリにコピーしました。

cp ~/local/* ./

実際に入りたいです。

cp ~/local/srl* ./

だから不要なファイルが多すぎます。手動で抑制できますが、その用語のコマンドを元に戻す方法があるかどうか疑問に思います。

答え1

いいえ、コマンドを元に戻す方法はありません(少なくとも普遍的ではありません)。これは、ユーザーがrm誤った正規表現を使用して実行し、削除しようとしているファイルよりも多くのファイルを上書きすることを認識していない場合、しばしば問題になります。

さらに、端末でコマンドを元に戻すことも実際には不可能です。電子メールを送信したり、音声を再生したりするコマンドを考えてみましょう。この操作をキャンセルする方法はありません。

幸いにもあなたは逃げましたcp。いいえrm

将来的には、あまりにも多くのファイルを移動/削除/コピーしないと、-iスイッチは「対話型」モードになり、各操作の前に確認を要求します。

答え2

これらのコマンドを元に戻す一般的な方法はありません。ただし、ファイルを上書きしていない場合は、ソースファイルのリストを使用してターゲットから削除する必要があるファイルセットを識別するのは難しくありません。

誤って以下を実行しました。

cp ~/local/* ./

したがって、削除するファイルセットを見つけるには、次のように使用できます。

for SRC in ~/local/*; do DST="${SRC/*\/}"; echo rm "$DST"; done

DST="${SRC/*\/}"ファイル名だけを残してファイルリストからパスを削除します。)正しいファイルセットがリストされていることに満足している場合は、~/local/*コマンドからそのパスを削除して再実行してください。echo

答え3

  1. 安全で遅い方法:

    この方法には、フォルダを1つずつ削除することが含まれます。次のコマンドを使用して、選択したフォルダのファイルを削除できます。

    rm -rf folder_name
    
  2. より速い方法:

    必要なファイルを誤って削除したくない場合は注意してください。

    for SRC in ~/local/*; do
        DST="${SRC/*\/}";
        rm "$DST";
    done
    

答え4

いいえ。通常、端末コマンドは元に戻すことはできません。

状況に応じて、次の特定のファイルを除くすべてのファイルを簡単に削除できます。

shopt -s extglob
rm !(srl*)

関連情報