Linux
想要根據修改日期壓縮文件
一個文件(Paths.dat),其中包含多個路徑,它需要在其中查找 15 天前的文件並將其壓縮到具有修改日期的同一文件夾中。
Paths.dat :- 包含文件系統中的多個路徑(帶分隔符’|’)
/docusr1/user01 | /docusr2/user02 | /home/user01
例如:- /docusr1/user01
-rwxrwxrwx. 1 docusr2 docusr2 0 Mar 30 10:52 vinay.txt -rw-rw-r--. 1 docusr2 docusr2 0 Mar 30 10:52 sathish.txt -rw-rw-r--. 1 docusr2 docusr2 625 Apr 2 10:57 demo1.xml -rw-rw-r--. 1 docusr2 docusr2 4430 Apr 2 11:09 sample.xml -rw-rw-r--. 1 docusr2 docusr2 48 Apr 2 14:04 20180402140454.log -rw-rw-r--. 1 docusr2 docusr2 48 Apr 2 14:39 20180402143917.log -rw-rw-r--. 1 docusr2 docusr2 39 Apr 2 14:41 20180402144159.log -rw-rw-r--. 1 docusr2 docusr2 84 Apr 2 14:46 20180402144651.log -rw-rw-r--. 1 docusr2 docusr2 279 Apr 2 14:48 archive.sh -rw-rw-r--. 1 docusr2 docusr2 84 Apr 2 14:48 20180402144814.log -rw-rw-r--. 1 docusr2 docusr2 1228 Apr 5 10:10 real.xml
搜尋 15 天前的文件,需要將修改日期的文件壓縮為 zip 文件名(存檔文件)
預期的o / p:-
20170330.zip -> it should contain all file which are modified on 2017-03-30 20170402.zip 20170405.zip
find . -maxdepth 1 -mtime +15 -type f -printf "%TY%Tm%Td %p\n" | while read date name ; do zip $date $name; done
Ymd 格式文件的最後修改時間
要為所有下面的目錄執行此操作,有不同的方法可以執行此操作,下面給出一些,確保使用絕對路徑和 find,例如我使用
"/home/user"
find /home/user -type d -print0 | while read -d '' -r dir; do cd "$dir" && pwd && find . -maxdepth 1 -mtime +15 -type f -printf "%TY%Tm%Td %p\n" | while read date name ; do zip $date $name; done; done
或者
find /home/user -type d -print0 | xargs -0 -I {} sh -c 'cd '\"{}\"' && pwd && find . -maxdepth 1 -mtime +15 -type f -printf "%TY%Tm%Td %p\n" | while read date name ; do zip $date $name; done'