Unixコマンドを実行してファイルリストを繰り返す一般的な方法はありますか?たとえば、あるディレクトリ内のすべてのファイル(ディレクトリを除く)を別のディレクトリに移動し、各ファイルの前にy / nプロンプトを表示するとします。明らかにこれはスクリプトを介して実行できますが、mvだけでなくファイルに対する同様の操作(rm、cat、wc、grepなど)にも使用できるコマンド方法はありますか?
ベストアンサー1
はい、
find /path/to/source/dir -type f -maxdepth 1 -ok mv {} /path/to/target/dir \;
ここのコマンドは、find
すべての一般ファイルを検索し、/path/to/source/dir
ユーザーに与えられたアクションを実行するように求めるメッセージを表示します。この場合、ファイルをに移動します/path/to/target/dir
。ユーザーがy
(およびenter)を押すと、操作が実行されます。
{}
は順番に見つかった各ファイルの名前に置き換えられ、各ファイルに対して実行されたコマンドは\;
。
-ok
に置き換えると、-exec
ユーザーにメッセージが表示されず、次のメッセージが表示されます。みんな文書。
-maxdepth 1
ファイル検索を最上位ディレクトリ(/path/to/source/dir
)に制限します。これがなければ、find
指定されたパスの下のすべてのサブディレクトリに再帰されます。
-type f
検索を通常のファイルに限定します(ディレクトリ、ソケット、デバイスファイルなどは検索しません)。