저는 현재 운영 체제 수업을 듣고 있으며 커리큘럼의 일부로 bash 스크립트를 수행하는 방법을 배우고 있습니다. 스크립트를 통해 하위 디렉터리를 건드리지 않고 디렉터리의 모든 파일에 날짜를 추가해야합니다. 모든 파일에 날짜를 추가하는 한 줄짜리 스크립트를 작성했지만 현재 디렉토리의 폴더에도 영향을 미칩니다.
for f in *; do mv -- "$f" "$f-$(stat -c %Y "$f" | date +%Y%m%d)"; done
이것은 파일 이름 끝에 날짜를 추가하지만 내가 말했듯이 그 아래의 디렉토리에 도달합니다. 현재 RedHatLinux에서 bash 버전 4.1.2를 사용하고 있습니다.
나는 유닉스에 대한 경험이 부족하기 때문에 (저는 주로 Windows 사용자입니다) 모두가 혼란스러워서 어떤 도움을 주시면 감사하겠습니다.
slm이 이미 언급했듯이 $f
일반 파일이되도록 테스트 할 수 있습니다 . 내가 배우는 동안 대본을 한 줄로 바꾸지 않고 읽고 유지하기가 더 어려워지는 경향이 있습니다.
for f in *
do
if [ -f "$f" ]
then
mv -- "$f" "$f-$(stat -c %Y "$f" | date +%Y%m%d)"
fi
done
(나중에 줄 ;
바꿈 을 삽입 하고 삭제 하여 언제든지 접을 수 있습니다. )
-f
테스트 인수가 일반 파일 (없는 장치 또는 디렉토리)로 잘 (같은 다른 검사가있는 -d
디렉토리 예를 들어, 테스트 할 수 있도록 if [ ! -d "$f" ]
이 경우뿐만 아니라이).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다