0
votes

I want to search for files by the exact date and then execute tar command on the results files.

Example:

-rw-rw-r--  1      0 Dec  4 08:07 file-1
-rw-rw-r--  1      0 Dec  4 08:07 file-2
-rw-rw-r--  1      0 Dec  5 08:07 file-3

I want to get only files with Dec 4 date and passing them to the tar command.

The archive should contain:

tar -ztvf dec4.tar.gz

Output:

-rw-rw-r--  1      0 Dec  4 08:07 file-1
-rw-rw-r--  1      0 Dec  4 08:07 file-2

This is my script it is still copying those Dec 5.

ls -ltr ./ | grep "Dec 4" | tar -zcvf /home/backupfiles_$(date '+%Y_%m_%d' --date='1 days ago').tar.gz

5
Need more info, like... what have you tried to make this work the way you want it to?bishop
there bro. can you help me for that?Cannot Ask Anymore

5 Answers

1
votes
find . -type f -name "*" -newermt 2013-12-04 ! -newermt 2013-12-05 | xargs -I {} tar -czvf files.tar.gz {}

Note: This will tar only the files not the directory hierarchy. You can specify your required date in find command.

1
votes
  ls -l ./ | grep "Dec 4" | tar -cvf archive.tar --null -T /dev/stdin

EDIT : use a temp file to store file names:

ls -l | grep "Dec  4" | tr -s " " "#" | cut -d "#"  -f 9 >tempfile ; tar -T tempfile -cvf arch.tar ; rm -r tempfile 
0
votes
stat -c"%z;%n" * | grep '^2012-12-04' | awk -F';' '{ print $2 }' | xargs tar -zcvf dec4.tar.gz
0
votes

So you want to tar files that are modified on a certain date? If so, that's a specific instance of the general problem "taring files modified between two dates". So like:

find /path/to/files/ \
   -newermt 20131204 -not -newermt 20131205 -type f -print0 \
   | cpio --create --null  --format=ustar \
   | gzip > /tmp/dec-4.tar.gz

This handles the case of many files, files that have spaces in the names, and avoids issues of grep including files that have a date in the name.

0
votes

Thanks to overloop! :) this is my script!

stat -c"%z;%n" * | grep '^2013-12-04' | grep "file-*" | awk -F';' '{ print $2 }' | xargs tar -zcvf pjpj.tar.gz