Replace part of folder(s)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace part of folder(s)
# 1  
Old 04-27-2013
Replace part of folder(s)

I have a script that will output folders that all end with "x.deb".

I want a shell script snippet that removes the "x.deb" from all those folders.

Thanks in advance.
# 2  
Old 04-27-2013
What do you mean by removes? Are you just interested in modifying a stream of text? Or are you trying to rename directories?

What have you tried?

Regards,
Alister
# 3  
Old 04-27-2013
Code:
for old in *x.deb; do
  if [ -d "$old" ]; then
    new=$(echo "$old" | sed "s/x\.deb$//")
    mv "$old" "$new"
  fi
done

# 4  
Old 04-28-2013
@hanson44, no need to use external utility: sed for performing substitution.

You can use built-in parameter substitution instead in any POSIX shell:
Code:
for name in *x.deb
do
        [[ -d "$name" ]] && mv "$name" "${name%%x.deb}"
done

# 5  
Old 04-28-2013
Quote:
no need to use external utility
I know. Smilie
# 6  
Old 04-28-2013
For POSIX you would need single brackets.

Also, a single percent-sign would work here and the loop can be made to on only use directory entries, so it would involve fewer iterations and only a test if the name exists, to avoid an error in case there are no directories with that pattern. Further, the mv command needs to be protected from commands that begin with "-". So, either:

Code:
for name in *x.deb/
do
  [ -e "$name" ] && mv -- "$name" "${name%x.deb/}"
done

or

Code:
for name in ./*x.deb/
do
  [ -e "$name" ] && mv "$name" "${name%x.deb/}"
done


--
In bash there is a nullglob option::
Code:
shopt -s nullglob
for name in ./*x.deb/
do
  mv "$name" "${name%x.deb/}"
done


Last edited by Scrutinizer; 04-28-2013 at 12:42 PM..
# 7  
Old 04-29-2013
I'm sorry to tell you this, however it seems as if none of the above work.

The folders I have:

The "test.x.deb" folders don't rename after running either script...

Last edited by pasc; 04-29-2013 at 09:20 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to replace part of string?

Hi Gurus, I need to replace part of string in file, the string format is below: I can use ABCD to find string, then replace values after "=" sign ABCD_XXX=value ABCD_YYY=value after replace ABCD_XXX=new_value ABCD_YYY=new_value my OS is SunOS 5.10 Generic_150400-64 sun4v sparc sun4v ... (9 Replies)
Discussion started by: green_k
9 Replies

2. Red Hat

Identify the folder is part of which mount point

Dear, I am using Redhat 6.6 . How to identify a given directory is part of which mount point. (2 Replies)
Discussion started by: aneesha
2 Replies

3. Shell Programming and Scripting

awk to replace part of a column

dear all, I'm trying to use Awk to eliminate the last two characters from the first column in a file. This two characters are "-1" and I need to eliminate them from each row that I have in the files. The files have two columns and look like: ID_090-1 2 ID_3787-1 4 ID_0098-1 1 ID_12-1 4 I... (4 Replies)
Discussion started by: gabrysfe
4 Replies

4. Shell Programming and Scripting

SED - replace only on part of the string

Hello there, I need some help. I have a file containing this : $ cat file PARM1=(VAL11),PARM2=(VAL21,VAL22,VAL23),PARM3=(VAL31),PARM4=(VAL41,VAL42) and I need to replace all the ',' by '|' but only those which are between brackets. Output would be :... (10 Replies)
Discussion started by: Sephiburp
10 Replies

5. Shell Programming and Scripting

Replace a part of the string

Hi I need to Replace a part of string in between one complete string. For e.g.. in the file the value is as: jobnm_$code_xyz_001 In script we are having a variable code=$3, where $3=ab final output should be jobnm_ab_xyz_001. But it is not working. Your help will be... (1 Reply)
Discussion started by: vee_789
1 Replies

6. Shell Programming and Scripting

replace part of text of a line

Gurus, You know, I believe you do:-), the comnand uname -r give you the kernel version: serverA:~# uname -r 2.6.26-1-xen-amd64So, I want to replace this output inside in the line below that is inside the file: kernel = '/boot/vmlinuz-2.6.26-1-xen-amd64'Suppose, you move this file to ther... (2 Replies)
Discussion started by: iga3725
2 Replies

7. Shell Programming and Scripting

Suggestion to replace a part of script

I have the part of script: if ; then make_command="make -f $temp_file" print $make_command; err_file="${sym_objdir}error.log" $make_command 2>$err_file; cat $err_file; ] && ] && exit 1; exit 0 fi ... (5 Replies)
Discussion started by: Ajay_84
5 Replies

8. UNIX for Dummies Questions & Answers

regarding replace a part of a string

hi all. i have a file name like abcd_vbnh.a_p i have to copy it as abcd_vbnh.a every time... in unix not in perl please (7 Replies)
Discussion started by: madhu_aqua14
7 Replies

9. Shell Programming and Scripting

Find and replace a part of the word in Shell

I have a csv file in which there are numbers like 078976/9XXX 098754/8XXX I want to replace the XXX with null. I want to know the command/code to do this. I know how to replace the whole word/number. But don't know how to replace a part of it. Thanks in advance, Mihir (3 Replies)
Discussion started by: mihirk
3 Replies

10. Shell Programming and Scripting

using sed to replace a part of string

Hi, I have files that are named front1.txt to front999.txt. They are all in the same directory. To change "front" to "back", I am doing something like this. for file in *.txt; do new=`echo $file | sed 's/^**/back/g'` mv $file $new done My problem is what if files are named... (6 Replies)
Discussion started by: csejl
6 Replies
Login or Register to Ask a Question