批量重命名多个文件并附加日期和时间戳

批量重命名多个文件并附加日期和时间戳

我需要一种自动方式在某个目录中的所有 .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 stat,但我不知道如何编写该代码。

答案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:看最后一行,它是一个子目录。

相关内容