Move zero byte files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Move zero byte files
# 1  
Old 09-14-2016
Move zero byte files

Hi,

I have a requirement to move zero byte files to an archive folder. I have the below script and it works fine if I run it from where the file is present. But when I run the script from different folder, I am getting error that file is not present. Please help.

Code:
#!/bin/ksh

INBOUND_PATH=/home/prasanna
ARCHIVAL_PATH=/home/prasanna/archive

ls -l $INBOUND_PATH | awk -F " " '{if ($5 == 0) print $9}' | xargs -I '{}' mv '{}' $ARCHIVAL_PATH

The problem is I am printing $9 from awk which gives me the filename alone. If I could get file path prefixing file name, it should resolve my issue
# 2  
Old 09-14-2016
Why don't you prepend the source file in the mv command with the $INBOUND_PATH?
# 3  
Old 09-14-2016
Code:
find $INBOUND_PATH -size 0 -print | xargs

or use -s : file is not zero size

using awk with $5 is not the safe way

Last edited by chakrapani; 09-14-2016 at 12:08 PM.. Reason: extra pipe
# 4  
Old 09-16-2016
RudiC,

I am now sure how to prepend source file. Please help on that.

Chakrapani,

I didnt went for find since the archival path is in a subfolder and it will picks up those files as well.
Code:
-maxdepth

is not supported in my version.
# 5  
Old 09-16-2016
This should overcome the missing -maxdepth find option:

Code:
find "$INBOUND_PATH"  -type d ! -name . -prune -o -type f -size 0 \
    -exec sh -c 'for i do echo mv "$i" "'$ARCHIVAL_PATH'"; done' sh {} +

Remove "echo" to enable the move.
# 6  
Old 09-16-2016
Quote:
Originally Posted by jlliagre
This should overcome the missing -maxdepth find option:

Code:
find "$INBOUND_PATH"  -type d ! -name . -prune -o -type f -size 0 \
    -exec sh -c 'for i do echo mv "$i" "'$ARCHIVAL_PATH'"; done' sh {} +

Remove "echo" to enable the move.
There is a bug: -name . only matches if the start directory is .
Code:
cd "$INBOUND_PATH" && find . -type d ! -name . -prune -o -type f -size 0 \
    -exec sh -c 'for i do echo mv "$i" "'"$ARCHIVAL_PATH"'"; done' sh {} +

A bit shorter is
Code:
cd "$INBOUND_PATH" && find . ! -name . -prune -type f -size 0 \
     -exec sh -c 'for i do echo mv "$i" "'"$ARCHIVAL_PATH"'"; done' sh {} +

I put another "quote" around the $ARCHIVE_PATH that avoids expansion+globbing in the current shell.

Last edited by MadeInGermany; 09-16-2016 at 02:16 PM..
These 2 Users Gave Thanks to MadeInGermany For This Post:
# 7  
Old 09-16-2016
Quote:
Originally Posted by MadeInGermany
There is a bug: -name . only matches if the start directory is .
...
I put another "quote" around the $ARCHIVE_PATH that avoids expansion+globbing in the current shell.
Thanks for the corrections MiG! I should have test the script I posted ;-)
This User Gave Thanks to jlliagre For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove files having 0 byte or only header

Hi Team, I'm looking for a command which removes files having 0 byte of having only header line (1 line). My ETL process generates these files. Few files are not having header, in that case if no data from source, it will be 0 byte and few files are having header, in that case if no data from... (7 Replies)
Discussion started by: ace_friends22
7 Replies

2. UNIX for Dummies Questions & Answers

Exit status as zero byte files

Hi, In a list of commands executed in a script, how do you make sure that the previous command worked fine? I have a list of awk commands and I want to make sure that the script aborts if any command leaves a zero byte file. (1 Reply)
Discussion started by: genehunter
1 Replies

3. Emergency UNIX and Linux Support

Given commands were created as 0 byte files

I were checking few processes running and check what at the files currently I have in my home directory by giving below commands $ ps -ef|grep sleep $ ls -lt | pg after awhile the first column of my commands were created as files given below... -rw-rw-rw- 1 prd 0 Mar 25 09:42 ls... (7 Replies)
Discussion started by: dateez
7 Replies

4. Shell Programming and Scripting

using c programming in unix to delete zero-byte files in a specified directory

we were asked to make a program that deletes all zero-byte files in a psecified directory. we need to use sysytem_calls like: scandir(),chdir(),stat() and remove(). (3 Replies)
Discussion started by: sogetsu009
3 Replies

5. Shell Programming and Scripting

Remove a byte(Last byte from the last line)

Hi All Can anyone please suggest me how to remove the last byte from a falt file .This is from the last line's last BYTE. Please suggest me something. Thank's and regards Vinay (1 Reply)
Discussion started by: vinayrao
1 Replies

6. Shell Programming and Scripting

Check if 2 files are identical byte-to-byte?

In my server migration requirement, I need to compare if one file on old server is exactly the same as the corresponding file on the new server. For diff and comm, the inputs need to be sorted. But I do not want to disturb the content of the file and need to find byte-to-byte match. Please... (4 Replies)
Discussion started by: krishmaths
4 Replies

7. Shell Programming and Scripting

finding 0 byte files in current directory only

Hi Gurus, I have a directory A, which has some 0 byte files in it. This directory also has a subdirectory B which also has some 0 byte files in it. The problem: I only need to find out the names of the 0 byte files in the directory A. I'm using the following command find . -name *.zip... (6 Replies)
Discussion started by: ramky79
6 Replies

8. UNIX for Dummies Questions & Answers

row count of all files with more than 0 byte

Hi, Is there any way to get count number of lines in all files which have more than o bytes in current directory for example : in /user/sri/ there are 3 files abc 0 bytes def 5 bytes ghi 10 bytes i need to get wc -l for all files which have > 0 bytes at a time ..is... (6 Replies)
Discussion started by: sri2005
6 Replies

9. Shell Programming and Scripting

problem with 0 byte and large files

how to remove all zero byte files in a particular directory and also files that are morew than 1GB. pLEASE let me know (3 Replies)
Discussion started by: dsravan
3 Replies

10. Filesystems, Disks and Memory

shell script to find zero byte files

I have a directory MYDIR In which i have several directories 1,2,3,4.... Now, In each of these directories i have several files a.dat, b.dat, c.dat, d.dat..... MYDIR ----1 ---------a.dat ---------b.dat ---------c.dat ---------d.dat ----2 ---------a.dat ---------b.dat ---------c.dat... (2 Replies)
Discussion started by: ramky79
2 Replies
Login or Register to Ask a Question