Solved

move all files from directories and subdirectories to folder

Posted on 2010-08-23
10
789 Views
Last Modified: 2013-11-22
Hi,

   I need some help in creating a .sh script where it will go through my /mnt/CVSSTank/dicom/hold directory, including the many sub-directories with it and move all of the files it finds to the path /mnt/CVSSTank/dicom/hold1.  When it is done moving the files, it would be nice if it deletes the sub-directories within /mnt/CVSSTank/dicom/hold -

thanks!
0
Comment
Question by:doc_jay
  • 5
  • 5
10 Comments
 
LVL 16

Expert Comment

by:santoshmotwani
ID: 33507590
if [ -e /mnt/CVSSTank/dicom/hold1 ]; then
      rsync -a -u -v  -e --delete-after /mnt/CVSSTank/dicom/hold/mnt/CVSSTank/dicom/hold1 > /var/log/backuplog.txt
else
      echo "USB Disk not mounted /mnt/CVSSTank/dicom/hold1 " > /var/log/backuplog.txt
fi

/bin/mail -s "my backedup files " abc@abc.com < /var/log/backuplog.txt
0
 

Author Comment

by:doc_jay
ID: 33507633
got an error with this:

cvssarch:/mnt/CVSSTank# sh test.sh
rsync: change_dir "/mnt/CVSSTank/dicom/hold/mnt/CVSSTank/dicom" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]
test.sh: /bin/mail: not found
cvssarch:/mnt/CVSSTank#


Thanks for looking--
0
 

Author Comment

by:doc_jay
ID: 33507650
okay I got it to run... just missed a 'space':

Thanks for your help on this --

this actually places a 'hold' directory in inside of my 'hold1' directory.  Is there a way to change it so that it so that it only moves the files that it finds inside '/mnt/CVSSTank/dicom/hold/' and its many sub-directories to 'mnt/CVSSTank/dicom/hold1'?  I don't want to retain the path, so in other words, I don't want any sub-directories moved over, only the contents of the 'hold' directory and the sub-directories with it.

Thanks
if [ -e /mnt/CVSSTank/dicom/hold1 ]; then
      rsync -a -u -v  -e --delete-after /mnt/CVSSTank/dicom/hold /mnt/CVSSTank/dicom/hold1 > /var/log/backuplog.txt
else
      echo "USB Disk not mounted /mnt/CVSSTank/dicom/hold1 " > /var/log/backuplog.txt
fi

/bin/mail -s "my backedup files " abc@abc.com < /var/log/backuplog.txt

Open in new window

0
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 16

Expert Comment

by:santoshmotwani
ID: 33507652
Was this comment helpful?
Yes No
santoshmotwani:
if [ -e /mnt/CVSSTank/dicom/hold1 ]; then
      rsync -a -u -v  -e --delete-after /mnt/CVSSTank/dicom/hold /mnt/CVSSTank/dicom/hold1 > /var/log/backuplog.txt
else
      echo "USB Disk not mounted /mnt/CVSSTank/dicom/hold1 " > /var/log/backuplog.txt
fi

0
 
LVL 16

Expert Comment

by:santoshmotwani
ID: 33507653
there is a space between

/mnt/CVSSTank/dicom/hold (space) /mnt/CVSSTank/dicom/hold1
0
 
LVL 16

Expert Comment

by:santoshmotwani
ID: 33507699
if [ -e /mnt/CVSSTank/dicom/hold1 ]; then
      rsync -a -u -v  -e --delete-after /mnt/CVSSTank/dicom/hold/* /mnt/CVSSTank/dicom/hold1 > /var/log/backuplog.txt
else
      echo "USB Disk not mounted /mnt/CVSSTank/dicom/hold1 " > /var/log/backuplog.txt
fi




try this
0
 

Author Comment

by:doc_jay
ID: 33507841
that only copied the contents of '/mnt/CVSSTank/dicom/hold' which included a lot of sub-directories.  So, your last attempt didn't work.

All of the files within '/mnt/CVSSTank/dicom/hold' are '.dcm' files.  Is there any way you could write a script that does a 'find' of all '.dcm' files within '/mnt/CVSSTAnk/dicom/hold/' and all of the sub-directories and then 'move' them to the '/mnt/CVSSTank/dicom/hold1' path?  After that could it delete all of the sub-directories within '/mnt/CVSSTank/dicom/hold'?  I also liked that log file idea you had.

Thanks
0
 
LVL 16

Expert Comment

by:santoshmotwani
ID: 33507922
if [ -e /mnt/CVSSTank/dicom/hold1 ]; then
      rsync -av   -r --remove-source-files /mnt/CVSSTank/dicom/hold/*  /mnt/CVSSTank/dicom/hold1 > /var/log/backuplog.txt
else
      echo "USB Disk not mounted /mnt/CVSSTank/dicom/hold1 " > /var/log/backuplog.txt
fi



Hi this will copy everything under HOLD including sub- directories. It will also delete all the files , but m not certain about directories.

I tested it on my PC
0
 

Author Comment

by:doc_jay
ID: 33510130
this did not work either.  All it did was copy all of the sub-directories inside of /mnt/CVSSTank/dicom/hold to /mnt/CVSSTank/dicom/hold1.  

Is there anyone else who might have any ideas, particularly one that does not include 'rsync'?

Here is my idea of how the script could be written:

'All of the files within '/mnt/CVSSTank/dicom/hold' are '.dcm' files.  Is there any way you could write a script that does a 'find' of all '.dcm' files within '/mnt/CVSSTAnk/dicom/hold/' and all of the sub-directories and then 'move' them to the '/mnt/CVSSTank/dicom/hold1' path?  After that could it delete all of the sub-directories within '/mnt/CVSSTank/dicom/hold'?'

thank you all
0
 

Accepted Solution

by:
doc_jay earned 0 total points
ID: 33518114
I found a solution:

find . -type f -name "*.dcm" -exec mv {} /mnt/CVSSTank/dicom/hold1/ \;

thanks for all of your help on this
0

Featured Post

ScreenConnect 6.0 Free Trial

Explore all the enhancements in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question