아래와 같이 특정 디렉토리에 있는 모든 .pdf 파일에 생성 날짜와 타임스탬프를 자동으로 추가하는 방법이 필요합니다.테스트파일.pdf될 필요가테스트 파일-YYY.MM.DD_HH.MM.SS.pdf 저는 OSX 터미널을 사용합니다.
나는 이 코드를 가지고 있습니다 :
cd "/Users/***/Documents/testmapa"
old_filename=""testfile.pdf"
new_filename=${old_filename%.*}$(stat -f %SB -t "%Y%m%d_%H%M%S" "$old_filename").${old_filename##*.}
mv "$old_filename" "$new_filename"
이것은 작업을 수행하지만 하나의 파일에서 특정 디렉토리의 모든 pdf 파일에 어떻게 적용합니까? 기본적으로 일부 코드를 실행하고 파일을 클릭한 디렉터리에 있는 모든 .pdf 파일의 파일 이름에 이 생성 날짜를 추가하려면 "클릭"하는 파일이 필요합니다. 한 가지 더 질문이 있습니다. 이 코드가 하위 폴더에서 실행됩니까? Perl을 설치했는데 어떻게 사용하는지 모르겠습니다. 이름 바꾸기 기능과 ctime 통계가 있다는 것만 알고 있지만 해당 코드를 작성하는 방법을 모르겠습니다.
답변1
다음과 같은 것이 나에게 잘 작동합니다.
for files in /home/gv/Desktop/PythonTests/*.sh; do
old_filename=$files
old_filename_stripped=$(basename -a $files)
echo "filename full : $old_filename - file name stripped: $old_filename_stripped"
done
산출:
filename full : /home/gv/Desktop/PythonTests/advfind2.sh - file name stripped: advfind2.sh
filename full : /home/gv/Desktop/PythonTests/advfind.sh - file name stripped: advfind.sh
filename full : /home/gv/Desktop/PythonTests/appslist(draft).sh - file name stripped: appslist(draft).sh
filename full : /home/gv/Desktop/PythonTests/appslist.sh - file name stripped: appslist.sh
향상된 코드에는 공백과 하위 디렉터리가 포함됩니다.
IFS=$'\n'
for files in $(find /home/gv/Desktop/PythonTests/ -name "*.txt" ); do
old_filename="$files"
old_filename_stripped=$(basename -a "$files")
echo "filename full : $old_filename - file name stripped: $old_filename_stripped"
done
unset IFS
산출:
filename full : /home/gv/Desktop/PythonTests/b.txt - file name stripped: b.txt
filename full : /home/gv/Desktop/PythonTests/c.txt - file name stripped: c.txt
filename full : /home/gv/Desktop/PythonTests/a ver 1.txt - file name stripped: a ver 1.txt
filename full : /home/gv/Desktop/PythonTests/d.txt - file name stripped: d.txt
filename full : /home/gv/Desktop/PythonTests/a.txt - file name stripped: a.txt
filename full : /home/gv/Desktop/PythonTests/appsfiles/a.txt - file name stripped: a.txt
PS: 마지막 줄을 보세요. 하위 디렉터리입니다.