모든 이미지를 중앙 파일로 이동하는 bash 스크립트를 작성 중입니다.
다음 명령을 사용하여 이미지 파일 목록을 만듭니다.
img_fil='/home/files/img_dump.txt'
locate -i image | grep \.jpg > "$img_fil"
locate -i image | grep \.jpeg >> "$img_fil"
locate -i image | grep \.gif >> "$img_fil"
locate -i image | grep \.tif >> "$img_fil"
locate -i image | grep \.png >> "$img_fil"
그러나 이에 대한 덤프 파일 처리를 시작하면 대부분의 경로에 공백이 포함되어 있으므로 작동하지 않습니다.
while read -r fline
do
if [ ! -e "$fline" ]; then
echo "F=> $fline"
mv "$fline" "$img_dir"
else
fpath="$(dirname $fline)"
fname="$(basename $fline)"
echo "F=> $fname P=> $fpath"
fi
done
디렉터리 이름과 기본 이름은 항상 공백으로 확인되므로 올바르게 처리되지 않습니다.
어떻게 작동하게 합니까?
답변1
fpath="$(dirname $fline)"
fname="$(basename $fline)"
$fline
여기서는 명령 대체를 인용 해야 합니다 . (외부는 과제 내부에 있으므로 중요하지 않습니다.) 그래서:
fpath=$(dirname -- "$fline")
또는
fpath=${fline%/*}
dirname
basename
( /와 매개변수 확장 사이의 미묘한 차이점에 유의하시기 바랍니다 . 다음을 참조하세요.디렉토리 이름, 기본 이름 및 매개변수 확장)
답변2
$img_fil
스크립트의 어디에서 사용합니까? 라인이 아니어야 done
합니까 done < "$img_fil"
?