我正在尝试使用文件名(Unix时间戳)复制在过去24小时内创建的文件(在同一台服务器上):
find /srv/docs/files/ -type f -iname '*.pdf' -mtime -1 -exec cp {} /srv/docs/pdf \;
但是,我想进一步扩展这一点。我想完成以下任务:
名为1425787200.pdf的文件将以/srv/docs/pdf/Sunday/0400/Sunday-0400.pdf结尾
此外,如果文件已存在,则应将增量编号添加到文件中。例如Sunday-0400-1.pdf,Sunday-0400-2.pdf
任何帮助都将不胜感激。
答案 0 :(得分:1)
要将文件名1425787200.pdf
更改为/srv/docs/pdf/Sunday/0400/Sunday-0400.pdf
,请使用以下内容:
#!/usr/bin/bash
file=1425787200.pdf
day=$(date +"%A" -d "@${file%.*}")
time=$(date +"%H%M" -d "@${file%.*}")
new_file=/srv/docs/pdf/$day/$time/$day-$time.pdf
if [ -e "$new_file" ]; then
num_file=${new_file%.*}
num=1
while [ -e "${num_file}-${num}.pdf" ]; do
num=$(( num + 1 ))
done
new_file=${num_file}-${num}.pdf
fi
mv $file $new_file
这也将重复数字。