Move File Containing More Than two "-" at 3rd Line To New Directory


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Move File Containing More Than two "-" at 3rd Line To New Directory
# 1  
Old 03-29-2015
Move File Containing More Than two "-" at 3rd Line To New Directory

Hi Guys

I am trying to move file containing more than two - at the 3rd line of each files to a new directory. The files are something like this :

Code:
****** Text ******

[text-text-text]
/text/

text text
[text-text]

I want to make sure the search effect only take place on the 3rd line one as there might me similar pattern in other lines in some text files.

This is the closest command I could write so far :
Code:
find . -maxdepth 1 -name '*-*-*-*' -type f -exec mv '{}' '/new_directory' \;

I've got no idea how to make it take effect on just 3rd line for the searching part and it doesn't seem to find the "string" containing in the file either. Smilie This search only take place on the filenames, not what's inside the file.

Thank you in advance Smilie
# 2  
Old 03-29-2015
Unfortunately you need to open every single file and analyze its third line. This can't be done with find nor even grep; you'll need e.g. awk for it. Try
Code:
awk 'FNR==3 && 1<gsub ("/", "&") {printf "%s%c", FILENAME, "\000"}' file* | xargs -0 echo mv -t ./new_directory

This will not work on every awk nor every xargs nor mv; try it, YMMV...


EDIT: From testing with my files, there's a "/" in the gsub, which should be "-". Please correct.

Last edited by RudiC; 03-29-2015 at 12:51 PM..
These 2 Users Gave Thanks to RudiC For This Post:
# 3  
Old 03-29-2015
Oh no Smilie my awk doesn't seem to work either. I don't think I could achieve doing one by one as it's about 690,000 files :S I guess I'm doomed. :|
# 4  
Old 03-29-2015
WHAT is not working?

And, you'll have to open every single file in order to get at the third line in each.
This User Gave Thanks to RudiC For This Post:
# 5  
Old 03-29-2015
Code:
Untitleds-MacBook-Pro:~ Nexeu$ awk 'FNR==3 && 1<gsub ("/", "&") {printf "%s%c", FILENAME, "\000"}' /Users/Nexeu/Documents/TEST/killer.txt | xargs -0 echo mv -t /Users/Nexeu/Documents/IPA
mv -t /Users/Nexeu/Documents/Dictionary/IPA /Users/Nexeu/Documents/TEST/killer.txt
Untitleds-MacBook-Pro:~ Nexeu$

The command is executed successfully but the file still remains at the initial folder. I want to move those that has words more than two - so I tested on file containing this content

Code:
****** killer ******

[test-test-test-test]  
/ˈkɪl ər/
IPA Syllables
    * Examples
    * Word Origin
  noun
1.
a person or thing that kills.
2.
killer whale.
3....

# 6  
Old 03-29-2015
Sorry, forgot to mention that the echo is there as a safeguard. It is echoing but not executing the mv command. Remove the echo and it should fly.
This User Gave Thanks to RudiC For This Post:
# 7  
Old 03-29-2015
There seems to be error. Got to do with mv command.

Code:
Untitleds-MacBook-Pro:~ Nexeu$ awk 'FNR==3 && 1<gsub ("/", "&") {printf "%s%c", FILENAME, "\000"}' /Users/Nexeu/Documents/TEST/killer.txt | xargs mv -t /Users/Nexeu/Documents/IPA
mv: illegal option -- t
usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
Untitleds-MacBook-Pro:~ Nexeu$ awk 'FNR==3 && 1<gsub ("/", "&") {printf "%s%c", FILENAME, "\000"}' /Users/Nexeu/Documents/TEST/killer.txt | xargs -0 mv -t /Users/Nexeu/Documents/IPA
mv: illegal option -- t
usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
Untitleds-MacBook-Pro:~ Nexeu$ awk 'FNR==3 && 1<gsub ("/", "&") {printf "%s%c", FILENAME, "\000"}' /Users/Nexeu/Documents/TEST/killer.txt | xargs -0 mv -f /Users/Nexeu/Documents/IPA
usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
Untitleds-MacBook-Pro:~ Nexeu$

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. Shell Programming and Scripting

Failure: if grep "$Var" "$line" inside while read line loop

Hi everybody, I am new at Unix/Bourne shell scripting and with my youngest experiences, I will not become very old with it :o My code: #!/bin/sh set -e set -u export IFS= optl="Optl" LOCSTORCLI="/opt/lsi/storcli/storcli" ($LOCSTORCLI /c0 /vall show | grep RAID | cut -d " "... (5 Replies)
Discussion started by: Subsonic66
5 Replies

4. Shell Programming and Scripting

Move a line containg "char" above line containing "xchar"

Okay, so I have a rather large text file and will have to process many more and this will save me hours of work. I'm not very good at scripting, so bear with me please. Working on Linux RHEL I've been able to filter and edit and clean up using sed, but I have a problem with moving lines. ... (9 Replies)
Discussion started by: rex007can
9 Replies

5. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

6. Shell Programming and Scripting

Find lines with "A" then change "E" to "X" same line

I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
Discussion started by: nightwatchrenba
10 Replies

7. UNIX for Dummies Questions & Answers

look for file size greater than "0" of specific pattern and move those to another directory

Hi , i have some files of specific pattern ...i need to look for files which are having size greater than zero and move those files to another directory.. Ex... abc_0702, abc_0709, abc_782 abc_1234 ...etc need to find out which is having the size >0 and move those to target directory..... (7 Replies)
Discussion started by: dssyadav
7 Replies

8. UNIX for Dummies Questions & Answers

script works well but displays " line 6: =: No such file or directory"

strange :) can you tell why?:cool: #!/bin/bash echo " enter your age " read age if ; then echo " you do not have to pay tax " elif ]; then echo " you are eligible for income tax " else echo " you dont have to pay tax " fi (3 Replies)
Discussion started by: me.
3 Replies

9. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question