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
# 8  
Old 03-29-2015
Give
Code:
awk 'FNR==3 && 1<gsub ("-", "&") {printf "%s%c", FILENAME, "\000"}' file* | xargs -I {X} -0 mv {X} ./new_directory

a try. It will run mv for every single file thus being not as effective as the first approach.

Last edited by RudiC; 03-29-2015 at 12:49 PM.. Reason: Had an error in gsub - replaced "/" with "-"
This User Gave Thanks to RudiC For This Post:
# 9  
Old 03-29-2015
A variation of RudiC's solution that should work in OS X. If your file names have spaces in the name then
Code:
awk 'FNR==3 && /[a-z]*-[a-z]*-[a-z]*-/ {printf"%s\n", FILENAME}' file* | xargs -I {} echo mv {} ./destination

And if your files do not have spaces in the name then
Code:
awk 'FNR==3 && /[a-z]*-[a-z]*-[a-z]*-/ {printf"%s\n", FILENAME}' file* | xargs -J {} echo mv {} ./destination

Remove the echo to actually move the file.
This User Gave Thanks to xbin For This Post:
# 10  
Old 03-29-2015
XBin,
Shouldn't the regex be:
Code:
/-[^-]*-[^-]*-/

which matches a line with more than two -s?
These 2 Users Gave Thanks to derekludwig For This Post:
# 11  
Old 03-29-2015
There are a few things we could do to speed up processing 690,000 files, but we need a few more details to come up with something that stands a chance of working correctly and reasonably quickly. (Nothing reading 690,000 files is going to be quick, but there may be a difference between slow and SSSSLLLLLOOOOWWWW.)
  1. Do any of the filenames you need to move contain any of the characters, <space>, <tab>, <newline>, <single-quote>, or <double-quote>? If so, which of these characters might appear in your filenames? If some of these characters do appear in your filenames, do they appear in all of your filenames? If not, how many of your filenames (that will be moved) will contain any of these characters?
  2. Are all of the files you need to evaluate:
    • in a single directory?
    • in a single directory hierarchy?
    • in several single directories?
    • in several directory hierarchies?
    If they are in single directories, do any of those directories contain any subdirectories?
  3. Are all of the selected files going to a single directory? Or, if the files are coming from a directory hierarchy, is the hierarchy to be copied to the destination directory?
  4. What is the minimum size, maximum size, and approximate average size (in bytes) of the files you need to evaluate?
  5. Is it really true that all that needs to be checked is that there are three or more hyphens on the 3rd line of a file, or do we need to verify that the line starts with a [, ends with a ], and contains at least three hyphens surrounded by one of more lowercase letters?
  6. Out of the 690,000 files you need to process; how many do you expect will be moved?
This User Gave Thanks to Don Cragun For This Post:
# 12  
Old 05-14-2015
Hi

I am so so sorry for the late reply guys. I lost the file and it took me quite awhile to retrieve those back as the internet is slow here.

So,

Here's the info of the file size :
2,590,008,989 bytes (3.69 GB on disk) for 696,545 items

I believe each of the file size varies from 6kb to 18kb

And I am definitely sure all of the files are in single directory cause I am the one who created this mess =x

Some of the files doesn't contain hyphens at the 3rd lines at all. Especially those which file names are more than one word.

As it's all in single directory, it's hard for me to access them without terminal. So I wish to organize them by moving them into folders like 0H, 1H, 2H, 3H, 4H and so on. (H stands for hyphen btw Smilie)

Here's a sample of a file content that contains Hyphen at 3rd line
Code:
****** killer ******

[kil-er]  /ˈkɪl ər/
IPA Syllables
    * Examples
    * Word Origin
  noun
1.
a person or thing that kills.
2.
killer whale.
3.
a device used by a post office for printing cancellations on postage stamps.
4.
a mark of cancellation made on a postage stamp.
5.
Slang. something or someone having a formidable impact, devastating effect, etc.:
The math test was a real killer.
   adjective, Slang.
6.
severe; powerful:
a killer cold.
7.
very difficult or demanding:
a killer chess tournament.
8.
highly effective; superior:
a killer recipe for fried chicken.

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

And here is the one that doesn't
Code:
****** absence makes the heart grow fonder ******
absence makes the heart grow fonder in Culture Expand
**** Absence makes the heart grow fonder definition ****

Persons, places, or things become dearer to us when they are absent.
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

# 13  
Old 05-14-2015
Did you test any of the proposals? Are there errors? If yes, post output.

You can run the proposals on groups of files, e.g. all starting with "A", then "B", etc. to keep execution times manageable.
This User Gave Thanks to RudiC For This Post:
# 14  
Old 05-14-2015
I didn't try the one-by-one command method as there is too many, however, I'd tried :
awk 'FNR==3 && 1<gsub ("-", "&") {printf "%s%c", FILENAME, "\000"}' file* | xargs -I {X} -0 mv {X} ./new_directory

Code:
awk 'FNR==3 && /[a-z]*-[a-z]*-[a-z]*-/ {printf"%s\n", FILENAME}' file* | xargs -I {} echo mv {} ./destination

It was successfully executed and moved 14 of the files that contain one hyphens to four.

Those file names are:
Code:
file-powder.txt
filé-powder.txt
filé.txt
file+powder.txt
filé+powder.txt
filene.txt
filés.txt
filet mignon.txt
filet-mignon.txt
filet.txt
filet+mignon.txt
fileted.txt
fileting.txt
filets+mignons.txt

But it didn't meet the purpose.
 
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