简体   繁体   中英

Create Unix shell script to move non empty files from Source directory to Target directory and add timestamp to them

I am trying to Create a shell script to move non empty files from Source directory to Target directory and add timestamp to them. I am using

find . -type f -size +0 -print0 | xargs -I {} -r0 mv {} $Tgt_dir/{}_`date +%m%d%Y`

but its not working. Could you please help.

Thanks

You can use -printf in find to print the mv command with the full path of the source and just the basename in the destination, and pipe that to the shell:

date=$(date +%m%d%Y)
find . -type f -size +0 -printf "mv '%p' '$Tgt_dir/%f_$date'" | bash

%p is the full pathname, %f is the basename.

To move files with at least one line, write a command that counts the number of lines:

date=$(date +%m%d%Y)
find "$Src_dir" -type f -size +0 -printf "if [ $(wc -l '$p') -gt 1 ]; then mv '%p' '$Tgt_dir/%f_$date'; fi" | bash

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM