1つの文書(パス.dat)には、15日以上経過したファイルを見つけ、変更された日付とともに同じフォルダに圧縮する必要がある複数のパスが含まれています。
パス.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ファイル名(アーカイブファイル)として使用する必要があります。
期待される出力:-
20170330.zip -> it should contain all file which are modified on 2017-03-30
20170402.zip
20170405.zip
ベストアンサー1
find . -maxdepth 1 -mtime +15 -type f -printf "%TY%Tm%Td %p\n" | while read date name ; do zip $date $name; done
Ymd形式のファイルが最後に変更された時刻
以下のすべてのディレクトリに対してこれを行うには、いくつかの方法があります。いくつかは以下に示されています。照会には絶対パスを使用する必要があります。たとえば、私は次のように使用します。"/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'