?
Solved

move all files from directories and subdirectories to folder

Posted on 2010-08-23
10
Medium Priority
?
799 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 
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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
Every server (virtual or physical) needs a console: and the console can be provided through hardware directly connected, software for remote connections, local connections, through a KVM, etc. This document explains the different types of consol…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.
Suggested Courses
Course of the Month15 days, 14 hours left to enroll

743 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