renaming according to text search


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting renaming according to text search
# 1  
Old 10-11-2012
renaming according to text search

hello

does someone want to help me for this one ?


i want to rename text file with something written in that file
so far i've used grep in the first 20 lines of the text, to find these words (translation from) or (translated from)
i need to take the name after these words (everything until the end of line) and mv it in the filename before extension


this script is helping me
Code:
find . -type f -exec grep -il 'HELLO' {} \; -exec mv {} {}.hello \;

but now i'm stucked & i don't know how to move 'the grep finding' in the filename
here is what i've done by now

Code:
find . -type f -name "*.txt" -exec grep -wi "\(translated from\)" <(head -n 20 *.txt) {} \; -exec mv -- "$f" "${f%.txt}\ --\ translated\ from \.txt" \;

of course that doesn't work only some parts work
works
Code:
grep -wi "\(translated from\)" <(head -n 20 *.txt)

thanks for you help !

Moderator's Comments:
Mod Comment edit by bakunin: Please view this code tag video for how to use code tags when posting code and data.

Last edited by bakunin; 10-11-2012 at 08:04 AM..
# 2  
Old 10-11-2012
Can you post the sample data?
# 3  
Old 10-11-2012
Quote:
Originally Posted by mc2z674gj
Code:
find . -type f -exec grep -il 'HELLO' {} \; -exec mv {} {}.hello \;

This will not work because "{}" can only be used ONCE in an exec clause. If you want this to work you will have to write a small script, like this (stripped down to the bare minimum):

Code:
# cat /usr/local/bin/findhelper.sh
#! /bin/sh
mv "$1" "${1}.hello"

# find . -type f -exec grep -il 'HELLO' {} \; -exec /usr/local/bin/findhelper.sh {} \;

You can probably adapt the script to do what you want to achieve.

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
# 4  
Old 10-11-2012
Quote:
Originally Posted by bmk
Can you post the sample data?
here is a example of text file, as you can see before the first 20 lines there is the occurence (translated from)
and after (Denis Roche)

so for that file the filename need to become :
les moujiks -- translated by denis roche.txt

Last edited by mc2z674gj; 10-11-2012 at 09:18 AM..
# 5  
Old 10-11-2012
if i use
Code:
find . -type f -exec grep -wil "\(translated from\)" {} \; -exec mv {} {}.translated\ from \;

i got the right thing regardind to the command and the filename become (les moujiks.txt.translated from)

so the grep & mv commands works well

but i don't know how to move the grep findings (the words after translated from) to the filename to got in final (les moujiks -- translated by denis roche.txt)
les moujiks.txt.translated from
# 6  
Old 10-11-2012
A bit convoluted but works:
Code:
printf "%s\n" *.txt|while read fname
do
if awk 'match($0,/translat(ion|ed) from/){
t=substr($0,RSTART)
gsub(/[^A-Za-z0-9_ -]/,"",t)
if(length(t)){print t;exit(0)}}
END{if(!length(t)) exit(1)}' <(head -20 "$fname") > temp
then
 mv "$fname" "${fname%.txt}_$(<temp).txt"
fi
done

If your grep supports the -m and -o switches, you could simplify this. But, then you'll have to make sure that you don't have some "wild" characters in the matching strings.

Last edited by elixir_sinari; 10-11-2012 at 09:57 AM..
This User Gave Thanks to elixir_sinari For This Post:
# 7  
Old 10-12-2012
thanks for your helpings to all, i really appreciate it !
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search a text and return the text from file

Hi I have a set of input strings in a pattern as given below string1 string2 string3 string4 string5 I need to search this sequence of strings from a file in such a way that the first two strings (string1 and string2) and last two strings (string4 and string5) should match with the... (8 Replies)
Discussion started by: my_Perl
8 Replies

2. Shell Programming and Scripting

Read in search strings from text file, search for string in second text file and output to CSV

Hi guys, I have a text file named file1.txt that is formatted like this: 001 , ID , 20000 002 , Name , Brandon 003 , Phone_Number , 616-234-1999 004 , SSNumber , 234-23-234 005 , Model , Toyota 007 , Engine ,V8 008 , GPS , OFF and I have file2.txt formatted like this: ... (2 Replies)
Discussion started by: An0mander
2 Replies

3. UNIX for Dummies Questions & Answers

Search String, Out matched text and input text for no match.

I need to search a string for some specific text which is no big deal using grep. My problem is when the search fails to find the text. I need to add text like "na" when my search does not match. I have tried this command but it does not work when I put the command in a loop in a bash script: ... (12 Replies)
Discussion started by: jojojmac5
12 Replies

4. Windows & DOS: Issues & Discussions

Renaming part of a text file ?

I have several files that are named like this "DotP_D14 - Verknüpfung" They all have the " - Verknüpfung" in common. I'd like to rename all of them to get rid of that last part. Is this possible with DOS on windows ? (1 Reply)
Discussion started by: pasc
1 Replies

5. Shell Programming and Scripting

Text search

Hello all, I want to find all the words that comes after certain words, I need to do that in order to process some log files for example Suppose that, I have this text Hello, I am from country_A, I am living in country_B. Now, I want to get all the word coming after (from and in). In... (7 Replies)
Discussion started by: fdc2suxs
7 Replies

6. Shell Programming and Scripting

search into text

Hello, I want to search a word inside a file from a script, that is moving through a script line by line and when I find the word "hello" to cut all the text from the beginning to there and so many times successively to get the word "hello "until the end of the text. Ie if a 4 times to cut the... (6 Replies)
Discussion started by: uri_crack
6 Replies

7. Shell Programming and Scripting

Search text from a file and print text and one previous line too

Hi, Please let me know how to find text and print text and its previous line. Please don't get irritated few days back I asked text and next line. I am using HP-UX 11.11 Thanks for your help. (6 Replies)
Discussion started by: kamranjalal
6 Replies

8. UNIX for Dummies Questions & Answers

search and replace a specific text in text file?

I have a text file with following content (3 lines) filename : output.txt first line:12/12/2008 second line:12/12/2008 third line:Y I would like to know how we can replace 'Y' with 'N' in the 3rd line keeping 1st and 2nd lines same as what it was before. I tried using cat output.txt... (4 Replies)
Discussion started by: santosham
4 Replies

9. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies
Login or Register to Ask a Question