Linuxで複数のファイルを移動したいです。
mv *.jpg /tmp/
しかし、各ファイルについて質問をしたいと思います。
mv --ask-me *.jpg /tmp/
do you want to move a.jpg? y/n y
do you want to move b.jpg? y/n n
これを行うコマンドはありますか?わかりました。しかし、すべてのファイルに対してメッセージを表示し、既存のファイルにのみmv -i
メッセージを表示したいと思います。mv -i
答え1
-p
(プロンプト)利用可能なオプションxargs
または-ok
述部find
:
find ./*.jpg -prune -ok mv {} dest/directory/ ';'
printf '%s\0' *.jpg | xargs -0pI@ mv -- @ dest/directory/
(これは、標準の現在のxargs
共通拡張と将来の拡張をサポートする実装を想定しています。)-0
答え2
シェルのもう1つのアプローチは、zsh
(対話型)オプションを使用することです。実行する各行を表示し、ユーザーに実行するかどうかを尋ねます。zmv
-i
autoload zmv
zmv -i -- '*.jpg' /tmp
印刷例
mv -- one.jpg /tmp
Execute?
ちょっと待って…Y
そうでなければy
実行され、他のものはスキップされます。オプションzmv
もあることを覚えておいてください-n
(実行しない:何が起こるのかを印刷しますが、実行しません)。
答え3
次のように試すことができます。
for i in *.jpg
do
printf 'do you want to move "%s"? ' "$i" >&2
read ans
if [ "$ans" = "y" ]
then mv -- "$i" /tmp
fi
done