따라서 다음 예와 비슷한 번호의 파일 목록이 있습니다.
/list/CAP_0045.dat
/list/CAP_0044.dat
/list/CAP_0046.dat
접두사를 추가하기 위해 가장 높은 번호의 파일 이름을 바꾸고 싶습니다. 어떻게 해야 하나요?
답변1
이를 위해 명령 대체를 사용할 수 있습니다(읽고 man sh
찾아보기).
ls /list | tail -n 1
올바른 파일이 인쇄 되면 다음을 수행할 수 있습니다.
file=$(ls /list | tail -n 1)
mv "/list/$file" "/list/PREFIX$file"
편집: @Wildcard가 지적했듯이 파일 이름에 개행 문자가 포함되어 있으면 실패할 수 있습니다.
파일 이름에 개행 문자를 사용하는 솔루션이라도 다음을 사용해야 합니다 find -print0
. (모든 버전이 / 옵션을 {sort,head,tail} -z
지원하는 것은 아니지만 GNU는 이를 지원합니다.)-z
--zero-terminated
file=$(find /list -print0 | sort -z | tail -n 1 -z)
mv "$file" "$(dirname "$file")/PREFIX$(basename "$file")"