Sponsored Content
Top Forums Shell Programming and Scripting Rename portion of file based on another file Post 302583126 by agama on Monday 19th of December 2011 03:59:31 PM
Old 12-19-2011
I don't usually use bash, so I didn't realise this before... seems that the script will work under bash without the typeset -A; have a try and see what happens. I tested it under bash, but didn't notice the complaint about the bad option to typeset.

As for the CRCn issue, I should have suggested this, but thought they were all *1 (I only looked at the first few filenames in your sample, so this is likely my fault). You can use something like this:

Code:
lane_n=${lanename:3:1}   # add this just before the cat command

and when substituting use:
Code:
ColonTrio${lane_n}_

which should take the number from the CRC and append it to ColonTrio.


EDIT: I tested this with bash version 3.2.39 -- if taking away the typeset all together doesn't work, it may be a version difference and another work around will be needed.

---------- Post updated at 15:59 ---------- Previous update was at 15:43 ----------

Here's a solution that should work -- avoids using an associative array in the shell:

Code:
while read old new
do
    eval $old=\"$new\"    # build a list of variables named using old with value that is new. 
done <barcodekey.txt 


find *gz | while IFS="_" read name lanename date sequence lane readpair number
do
    eval xlation=\"\$$sequence\"  # use the old name as a variable to get it's translation.
    if [[ ! -f ColonTrio1_${xlation}_${readpair}.fastq.gz ]]    # not already renamed
    then
        lane_n=${lanename:3:1}    # save the n after CRC
        echo "cat *_${lanename}_*_${sequence}_*_${readpair}* >ColonTrio${lane_n}_${xlation}_${readpair}.fastq.gz"
    fi
done


Last edited by agama; 12-19-2011 at 04:45 PM.. Reason: additional info
This User Gave Thanks to agama For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Select a portion of file based on query

Hi friends :) I am having a small problem and ur help is needed... I have a long file from which i want to select only some portions after filtering (grep). My file looks like : header xxyy lmno xxyy wxyz footer header abcd xy pqrs footer . . (14 Replies)
Discussion started by: vanand420
14 Replies

2. UNIX for Dummies Questions & Answers

Rename file based on first 3 characters of data in file

I'm looking to determine if I can use a grep command to read file and rename the file based on the first 3 characters of the data in the file. An example is: Read FileA If the first 3 positions of the data in the file are "ITP", then rename the file as FileA_ITP, else if the first 3... (3 Replies)
Discussion started by: jchappel
3 Replies

3. Shell Programming and Scripting

mv command to rename multiple files that retain some portion of the original file nam

Well the title is not too good, so I will explain. I need to move (rename) files using a simple AIX script. ???file1.txt ???file2.txt ???file1a.txt ???file2a.txt to be: ???renamedfile1'date'.txt ???renamedfile2'date'.txt ???renamedfile1a'date'.txt ???renamedfile2a'date'.txt ... (4 Replies)
Discussion started by: grimace15
4 Replies

4. UNIX for Advanced & Expert Users

need to get a portion of entries in file based on a criteria --- Help please

All, Below is the file, what i need to do is take the text in between the /*-- and --*/ , i mean the jobs. Then i have grep for system name . If the job is there in system 1 i have to print to a file. Basically i want to take all the jobs that are in system1 to another file . because... (7 Replies)
Discussion started by: arunkumar_mca
7 Replies

5. Shell Programming and Scripting

Rename folder based on containing XML file

Hi everyone. I'm in need of a solution where i need to rename a folder to a name that's inside an XML file in that folder. OS is Ubuntu 9.10 with Gnome. I've tried using grep, sed and xpath, but can't seem to find a solution. This is the simplified folder structure: FOLDER-NAME -... (4 Replies)
Discussion started by: CoolCow
4 Replies

6. Shell Programming and Scripting

Need to rename file based on name in same file

Good day. I need a one-liner (if possible) otherwise a longer script to do the following: I have a list of files in a directory with the same filename extension, ie. firstfile.cks, anotherfile.cks, somefile.cks, etc.The filename and extension, however, are incorrect. The correct filename... (7 Replies)
Discussion started by: BRH
7 Replies

7. Shell Programming and Scripting

Remove or rename based on contents of file

I am trying to use the two files shown below to either remove or rename contents in one of those files. If in file1.txt $5 matches $5 of file2.txt and the value in $1 of file1.txt is not "No Match" then that value is substituted for all values in $5 and $1 of file2.txt. If however in $1 ... (5 Replies)
Discussion started by: cmccabe
5 Replies

8. Shell Programming and Scripting

Rename files based on name in text file

Hello, I have a text file "file.list" with the contents below. file1 filename1 file2 filename2 file3 filename3 file1, file2 and file3 are files existing in the same directory as the text file file.list. I want to rename file1 to filename1, file2 to filename2, as show in the text... (1 Reply)
Discussion started by: james2009
1 Replies

9. Shell Programming and Scripting

Bash to copy file 3 times and rename based on another file

In the below bash I am trying to copy the only text file (always only one) in /home/cmccabe/Desktop/list/QC/metrics.txt and rename each of the 3 text files according to /home/cmccabe/Desktop/test/list.txt using lines 3, 4 ,5. This format (that is list.txt) is always 5 lines. Thank you :). ... (12 Replies)
Discussion started by: cmccabe
12 Replies

10. Shell Programming and Scripting

Bash to rename portion of file using match to another

In the portion of bash below I am using rename to match the $id variable to $file and when a match (there will alwsys be one) is found then the $id is removed from each bam and bam.bai in $file and _test is added to thee file name before the extension. Each of the variables is set correctly but... (3 Replies)
Discussion started by: cmccabe
3 Replies
RENAME(2)							System Calls Manual							 RENAME(2)

NAME
rename - change the name of a file SYNOPSIS
#include <stdio.h> int rename(const char *from, const char *to) DESCRIPTION
Rename causes the link named from to be renamed as to. If to exists, then it is first removed. Both from and to must be of the same type (that is, both directories or both non-directories), and must reside on the same file system. Rename guarantees that an instance of to will always exist, even if the system should crash in the middle of the operation. If the final component of from is a symbolic link, the symbolic link is renamed, not the file or directory to which it points. RETURN VALUE
A 0 value is returned if the operation succeeds, otherwise rename returns -1 and the global variable errno indicates the reason for the failure. ERRORS
Rename will fail and neither of the argument files will be affected if any of the following are true: [ENAMETOOLONG] A path name exceeds PATH_MAX characters. [ENOENT] A component of the from path does not exist, or a path prefix of to does not exist. [EACCES] A component of either path prefix denies search permission. [EACCES] The requested link requires writing in a directory with a mode that denies write permission. [EPERM] The directory containing from is marked sticky, and neither the containing directory nor from are owned by the effective user ID. [EPERM] The to file exists, the directory containing to is marked sticky, and neither the containing directory nor to are owned by the effective user ID. [ELOOP] Too many symbolic links were encountered in translating either pathname. (Minix-vmd) [ENOTDIR] A component of either path prefix is not a directory. [ENOTDIR] From is a directory, but to is not a directory. [EISDIR] To is a directory, but from is not a directory. [EXDEV] The link named by to and the file named by from are on different logical devices (file systems). [ENOSPC] The directory in which the entry for the new name is being placed cannot be extended because there is no space left on the file system containing the directory. [EIO] An I/O error occurred while making or updating a directory entry. [EROFS] The requested link requires writing in a directory on a read-only file system. [EFAULT] Path points outside the process's allocated address space. [EINVAL] From is a parent directory of to, or an attempt is made to rename ``.'' or ``..''. [ENOTEMPTY] To is a directory and is not empty. SEE ALSO
open(2) 4.2 Berkeley Distribution May 22, 1986 RENAME(2)
All times are GMT -4. The time now is 11:08 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy