Find and replace mulitple charaters in filenames


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Find and replace mulitple charaters in filenames
# 1  
Old 01-19-2013
Find and replace mulitple charaters in filenames

I have a virtual pdf printer set up on my server which produces files with the following prefix:
Code:
smbprn_00000044_Microsoft_Word_-_OriginalFilename.pdf

the number in the center of the file increase by one for each new file.

I want to remove all the charaters infront of OriginalFilename.pdf using the following code:
Code:
find . -type f -name '*[:smbprn_*_Microsoft_Word_-_*.pdf"]*' | while IFS= read -r; do mv -- "$REPLY" "${REPLY//[:smbprn_*_Microsoft_Word_-_*.pdf\"]}" done;

which I modified form here

If I run this directly from the command prompt I simply end up with a second > prompt?

I think I must be pretty close, any help would be welcome
# 2  
Old 01-19-2013
Try:
Code:
find . -type f -name 'smbprn_*_Microsoft_Word_-_*.pdf' | while read -r; do echo mv -- "$REPLY" "${REPLY/smbprn_*_Microsoft_Word_-_/}"; done;

Remove the echo when the command lines look OK.
And, I hope your original filename will not have _Microsoft_Word_-_ or smbprn_.
You may also do this with find itself using -exec (with some assumptions).
# 3  
Old 01-19-2013
Code:
find . -type f -name '*[:smbprn_*_Microsoft_Word_-_*.pdf"]*' | while IFS= read -r; do mv -- "$REPLY" "${REPLY//[:smbprn_*_Microsoft_Word_-_*.pdf\"]}" ;done;


Last edited by Scrutinizer; 01-19-2013 at 09:37 AM.. Reason: code tags
# 4  
Old 01-19-2013
Thanks for the replies;

This code:
Code:
find . -type f -name '*[:smbprn_*_Microsoft_Word_-_*.pdf"]*' | while  IFS= read -r; do mv -- "$REPLY"  "${REPLY//[:smbprn_*_Microsoft_Word_-_*.pdf\"]}" ;done;

Gives this result:
Code:
$ find . -type f -name '*[:smbprn_*_Microsoft_Word_-_*.pdf"]*' | while  IFS= read -r; do mv -- "$REPLY"  "${REPLY//[:smbprn_*_Microsoft_Word_-_*.pdf\"]}" ;done;
mv: cannot open `./smbprn_00000046_Microsoft_Word_-_Letters2.pdf' for reading: Permission denied
mv: cannot create regular file `/TePage': Permission denied
mv: cannot open `./smbprn_00000045_Microsoft_Word_-_Letters1.pdf' for reading: Permission denied

I get the same result even if run as root, the user I am running the command with has read/write permissions

This code:
Code:
find . -type f -name 'smbprn_*_Microsoft_Word_-_*.pdf' | while read -r;  do echo mv -- "$REPLY" "${REPLY/smbprn_*_Microsoft_Word_-_/}"; done;

Does move the files, but I'm not sure where to and the original file are still there:
Code:
find . -type f -name 'smbprn_*_Microsoft_Word_-_*.pdf' | while read -r; do echo mv -- "$REPLY" "${REPLY/smbprn_*_Microsoft_Word_-_/}"; done;
mv -- ./smbprn_00000046_Microsoft_Word_-_Letters2.pdf ./Letters2.pdf
mv -- ./smbprn_00000045_Microsoft_Word_-_Letters1.pdf ./Letters1.pdf

but then:
Code:
$ ls
smbprn_00000045_Microsoft_Word_-_Letters1.pdf  Test_Page.pdf
smbprn_00000046_Microsoft_Word_-_Letters2.pdf

I am running these commands from within the directory containing the files
# 5  
Old 01-19-2013
Hey, I told you to remove the echo.
I was echo'ing the mv command lines so that you could know what is being moved...
This User Gave Thanks to elixir_sinari For This Post:
# 6  
Old 01-19-2013
Quote:
Originally Posted by elixir_sinari
Hey, I told you to remove the echo.
I was echo'ing the mv command lines so that you could know what is being moved...
Sorry, skipped over that bit in my eagerness. Thanks it works!

Just out of interest what would be the easiest way to append the file date to the filename for these files?

Thanks
# 7  
Old 01-19-2013
How do you mean? Please elaborate with an example.
 
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 append timestamp in the filenames using find?

Hi, How to change the filenames with timestamp in sub folders I have the following code to select the records. find . -type f -name '*pqr*' -ctime 1 -print The following is the example app_root_dir="/`echo $ScriptDir | cut -d'/' -f2`" $app_root_dir/../BadFiles directory uvw.bad... (3 Replies)
Discussion started by: bobbygsk
3 Replies

2. UNIX for Dummies Questions & Answers

Find the list of filenames that have the string 31 at 4th and 5th position

Hi, Can anyone let me know the command to know the list of filenames that have string 31 in their 4th and 5th positions inside the file: grep -l "31" main*.txt The above grep lists all the files which have 31 at any position but I want filenames having 31 at position 4 and position 5. (8 Replies)
Discussion started by: okkadu
8 Replies

3. UNIX for Dummies Questions & Answers

find & remove characters in filenames

I have a group of files in different directories with characters such as " ? : in the file names. How do I find these files and remove these characters on mass? Thanks (19 Replies)
Discussion started by: barrydocks
19 Replies

4. UNIX for Advanced & Expert Users

replace word with special charaters

I have input file called file1 with characters that have \\ in it. I cannot change input file, because it is generated earlier in script. Now would like to replace string on line in file called bfile with output from file1 I have been using sed command. $cat file1 pc//6sPxp== $ cat scr1... (4 Replies)
Discussion started by: drtabc
4 Replies

5. Shell Programming and Scripting

awk help with find command and filenames with spaces

I have the following code: find /usr/local/test5 -type f -mtime +30 -exec ls -l {} \; | awk '{print $5, $6, $7, $8, $9}' I have this as output: 14 Aug 12 00:00 /usr/local/test5/file1 14 Aug 12 00:00 /usr/local/test5/lastname, The bolded part is where I run into trouble. The actual... (4 Replies)
Discussion started by: streetfighter2
4 Replies

6. Shell Programming and Scripting

Find duplicate filenames and remove in different mount point

Hi Gurus, Do any kind souls encounter have the same script as mentioned here. Find and compare filenames in different mount point and remove duplicates. Thanks a million!!! wanna13e (7 Replies)
Discussion started by: wanna13e
7 Replies

7. Shell Programming and Scripting

Help with Find/Replace Javascript Injected Strings in mulitple files

Hi, guys, I'm not a high-end programmer, but I've been trying to write a script to remove all of the b.rtbn2.cn (and b.adserv.cn and any future variation) injected script tags on the server. (Still working on security fixes to prevent it in the future, just need to clean up now.) My approach is... (1 Reply)
Discussion started by: zzlegs
1 Replies

8. Solaris

feeding filenames to find command

Hi, I am having set of files whose names are stored in a file say "filelist.txt" Now, I want to find all files contained in "filelist.txt" from my parent directory. Is there any way to let find command understand "filelist.txt" just like we have option -f in awk. I donot want to run a... (4 Replies)
Discussion started by: sanjay1979
4 Replies

9. Shell Programming and Scripting

find filenames like unix commands

Hi, I need to write a small script to search in some specific directories to check if any file is present with a unix command name... Means if the directory contains any files like cat, vi, grep, find etc i need to list those files into a file. Please help Thanks, D (6 Replies)
Discussion started by: deepakgang
6 Replies

10. UNIX for Dummies Questions & Answers

find lowercase filenames

How do I write the command to find all files with any lower case letters in the filename? I have tried find . -name *\(a-z\) and a lot of combinations like that, without success. thanks JP:confused: (4 Replies)
Discussion started by: jpprial
4 Replies
Login or Register to Ask a Question