여러 개의 파일을 mv하지만 각 파일에 대해 묻습니다.

여러 개의 파일을 mv하지만 각 파일에 대해 묻습니다.

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

쉘의 또 다른 접근 방식은 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

관련 정보