Rename files with its pathname


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Rename files with its pathname
# 1  
Old 10-26-2019
Rename files with its pathname

Hi,


I have a few csv files within the directory structure as shown below

Code:
/tmp/user/Proj/V1/data/Common1/Zip1/123.csv
/tmp/user/Proj/V1/data/Common2/Zip2/3453.csv
/tmp/user/Proj/V1/data/Common2/Zip2/1234.csv
and so on...

I need to get these csv files and move to another dir with the filename Common1_Zip1_123.csv,Common2_Zip2_3453.csv etc..I have written the following code but the filenames are having the whole path..Pl. correct on my code..


Code:
#!/bin/bash

SourceDir="/tmp/user/Proj/V1/data/
DestDir="/tmp/user/Proj/V1/data/FinalData"

for file in $(find $SourceDir -type f -name *.csv); do
        shortname=${file##*/$SourceDir/}
        newname="$DestDir/${shortname//\//_}"
        if [ -f $newname ]; then
                echo "$newname already exists."
        else
                cp $file $newname
        fi
done


The output i am getting is:
Code:
_tmp_user_Proj_V1_data_COMMON1_ZIP1_123.csv

# 2  
Old 10-26-2019
Hi
Code:
cd /tmp/user/Proj/V1/data/
find * -not -path "FinalData/*" -name "*.csv" |
    while read d; do
        echo cp $d FinalData/${d//\//_};
    done


Last edited by nezabudka; 10-26-2019 at 09:44 AM..
# 3  
Old 10-26-2019
Thank you. But it seems the files are not getting copied. Any other solution pl.
# 4  
Old 10-26-2019
remove echo
Code:
echo cp $d FinalData/${d//\//_}  #testing
cp $d FinalData/${d//\//_}

and insert test if need
Code:
if ! [ -e FinalData/${d//\//_} ]; then
    cp $d FinalData/${d//\//_}
fi


Last edited by nezabudka; 10-26-2019 at 11:42 AM..
These 2 Users Gave Thanks to nezabudka For This Post:
# 5  
Old 10-27-2019
Thank you. It helped.
# 6  
Old 10-27-2019
out of interest a couple of small issues were causing your original attempt to fail:

Code:
#!/bin/bash

SourceDir="/tmp/user/Proj/V1/data/"
DestDir="/tmp/user/Proj/V1/data/FinalData"

for file in $(find $SourceDir -not -path "${DestDir}/*" -type f -name *.csv); do
        shortname=${file#$SourceDir}
        newname="$DestDir/${shortname//\//_}"
        if [ -f $newname ]; then
                echo "$newname already exists."
        else
                cp $file $newname
        fi
done

These 2 Users Gave Thanks to Chubler_XL 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

SBATCH trinity for multiple files and rename/move the output files

Hey guys, I have wrote the following script to apply a module named "trinity" on my files. (it takes two input files and spit a trinity.fasta as output) #!/bin/bash -l #SBATCH -p node #SBATCH -A <projectID> #SBATCH -n 16 #SBATCH -t 7-00:00:00 #SBATCH --mem=128GB #SBATCH --mail-type=ALL... (1 Reply)
Discussion started by: @man
1 Replies

2. UNIX for Dummies Questions & Answers

Renaming files with part of their pathname and copying them to new directory

Hi I think this should be relatively simple but I can't figure it out. I have several files with the same name in different folders within a directory (the output of a program that I ran). Something like this: ./myAnalysis/item1/round1/myoutput.txt ./myAnalysis/item1/round2/myoutput.txt... (2 Replies)
Discussion started by: jullee
2 Replies

3. Shell Programming and Scripting

Script to unzip files and Rename the Output-files

Hi all, I have a many folders with zipped files in them. The zipped files are txt files from different folders. The txt files have the same names. If i try to find . -type f -name "*.zip" -exec cp -R {} /myhome/ZIP \; it fails since the ZIP files from different folders have the same names and... (2 Replies)
Discussion started by: pmkenya
2 Replies

4. UNIX for Dummies Questions & Answers

Rename Files

Hi all, I am newbie and Im trying to rename a set of files & there are over 2900 of them. So, the best way I thought was through a script and here is what I got & it doesnt work. Im not sure as how to figure this out. Thanks Gonzalez Here is what I have - -a:~/Users/GonzaPue/ls -altr... (3 Replies)
Discussion started by: PG3
3 Replies

5. UNIX for Dummies Questions & Answers

Rename all .sh files to .pl

I have various .sh and .pl files in one directory. I want to rename all the .sh files to .pl i.e testscript.sh --> testscript.pl I am trying to use mv *.sh *.pl It doesnt work though!! (3 Replies)
Discussion started by: chrisjones
3 Replies

6. Shell Programming and Scripting

Rename many files

Hi, I have many files ex: file1, file2 ...file100, and I would like to rename only files with "1" in name. I don't have experience with bash and other shells. I know I can use "for i in" and "if", and I can use "sed" to change "1" but I have no idea how should "if" look. I will be grateful... (6 Replies)
Discussion started by: Physix
6 Replies

7. Shell Programming and Scripting

rename files Ax based on strings found in files Bx

Hi, I'm not very experienced in shell scripting and that's probably why I came across the following problem: I do have several hundred pairs of text files (PF00x.spl and PF00x.shd) where the first file (PF00x.spl) needs to be renamed according a string that is included in the second file... (12 Replies)
Discussion started by: inCH
12 Replies

8. Shell Programming and Scripting

Rename files

Hi, I wanna rename bunch of files which has ":" to -. ie. rename file named file1:file1 to file1-file1. any ideas? (2 Replies)
Discussion started by: linuxaddict7
2 Replies

9. Shell Programming and Scripting

Rename files

Hello, I've a list of file like this img_001 img_22 img_44 and I would rename all with this form photo_0001 photo_0002 photo_0003 photo_0004 suggestions?Thanks to all. (2 Replies)
Discussion started by: cv313x
2 Replies

10. UNIX for Dummies Questions & Answers

How to rename files?

:confused: How can i rename a file 'x.log' to 'x_20020512 072909.log' :eek: i'm using perl, with system command from a unix web server, and need to timestamp my logs if the above format (filename _ year month day hr min sec .log) (9 Replies)
Discussion started by: CompuTelSystem
9 Replies
Login or Register to Ask a Question