On Wed, Oct 22, 2003 at 10:43:50PM -0600, Scott Gerhardt wrote: > > I am having trouble combining the tar and find command. I want to tar > and > delete all .bak,.Bak,.BAK files. > > I am using the following command but keep receiving errors. The tar > command > appears to be receiving a truncated file/path (some of the time, but not > always), and trying to procecss the file as two files. > > Any help on this would be great. > > The script is as follows > ========================================= > #! /bin/bash > set +x > TAR_DIR=/home/tarbackups; > FILES_DIR=/home/common; > tar --remove-files -cvzpf $TAR_DIR/bak_files_`date +%F`.tar.gz\ > `find $FILES_DIR -xdev -type f -iname "*.bak"`; > ========================================== > The -xdev is to not desend into an external smb-mounted drive to a > subdirectory. > > I have also tried substituting single quotes for the double quotes > around the > *.bak > > Here is some error output returned: > > tar: jobs/ROOF: Cannot stat: No such file or directory > tar: LAYOUTS/RESIDENTIAL/FRASER/219: Cannot stat: No such file or > directory > tar: LEWIS: Cannot stat: No such file or directory > tar: CRES.bak: Cannot stat: No such file or directory > tar: /home/technical/nfsapc30-my_documents/1999: Cannot stat: No such > file or > directory > tar: jobs/ROOF: Cannot stat: No such file or directory > tar: LAYOUTS/RESIDENTIAL/FRASER/THODE: Cannot stat: No such file or > directory > tar: RES.bak: Cannot stat: No such file or directory
The problem is that you have file/directory names like 'ROOF LAYOUTS' which contain spaces and possibly other filenames containing characters with syntactic significance to the shell. Try: find $FILES_DIR -xdev -type f -iname "*.bak -print0 | \ xargs -0 tar --remove-files -cvzpf $TAR_DIR/bak_files_`date +%F`.tar.gz Cheers, Matthew -- Dr Matthew J Seaman MA, D.Phil. 26 The Paddocks Savill Way PGP: http://www.infracaninophile.co.uk/pgpkey Marlow Tel: +44 1628 476614 Bucks., SL7 1TH UK
pgp00000.pgp
Description: PGP signature