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