아래 코드에서 크기가 0인 파일을 검색하고 원하는 경우 사용자에게 해당 파일을 삭제하라는 메시지를 표시합니다. 그러나 스크립트에서 디렉터리를 명령줄 인수로 지정할 수 있도록 허용해야 하므로 길을 잃었습니다. 명령줄에 디렉터리가 지정되지 않으면 현재 디렉터리를 기본 디렉터리로 사용해야 합니다. 나는 올바른 길을 가고 있다고 생각하지만 사용자에게 삭제하려는 파일의 경로를 묻는 메시지를 표시하는 방법을 알아낼 수 없는 것 같습니다.
#!/bin/bash
ls -lR | grep '^-' | sort -k 5 -rn
echo "Files of size zero, relative to current directory, are as follows:"
find . -size 0 -print
echo "Would you like to delete the files of size zero?: Type yes or no"
read answer
if [[ $answer == "yes" ]]
then
find . -type f -empty -delete
echo "List of files with size zero files deleted:"
ls -lR | grep '^-' | sort -k 5 -rn
else
echo "User wishes to not delete files"
fi
답변1
당신은 사용할 것이다
topdir=${1:-.}
topdir
변수가 누락되거나 비어 있지 않은 한 첫 번째 명령줄 인수로 설정 되며 , 이 경우 명령에서 사용할 .
수 있습니다. "$topdir"
큰따옴표를 사용하는 것을 잊지 마세요.
삭제하려는 파일의 경로를 사용자에게 묻는 메시지를 표시하지 않습니다 find
. 이미 해당 경로를 사용하고 있습니다.
find "$topdir" -type f -empty -delete
각 파일에 대한 힌트를 정말로 원한다면 사용할 수 있습니다
find "$topdir" -type f -empty -ok rm {} ';'
스타일 설명:
일반적으로 표준 오류가 발생하면 사용자에게 프롬프트가 출력됩니다.
echo "Would you like to delete the files of size zero?: Type yes or no" >&2 read answer
또는
read -p "Delete files (yes/no): " answer
두 통화에서
-size 0
와 를 혼합 합니다 .-empty
find