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
# 22  
Old 05-15-2015
Quote:
Originally Posted by Nexeu
@RudiC : You mean I should regroup them by moving into folders like aa, ab, ac and etc?

@Don Cragun : I have a word file named Pneumonoultramicroscopicsilicovolcanoconiosis.txt which has 18 hyphens on third line Smilie
Code:
[noo-muh-noh-uhl-truh-mahy-kruh-skop-ik-sil-i-koh-vol-key-noh-koh-nee-oh-sis, nyoo-]  /ˈnu mə noʊˌʌl trəˌmaɪ krəˌskɒp ɪkˈsɪl ɪˌkoʊ vɒlˌkeɪ noʊˌkoʊ niˈoʊ sɪs, ˈnyu-/

I m not sure if other files also has more than 15. I can't seem to find a command that could search whether my files has more than 15 hyphens at 3rd line or not. Smilie

And the files have IPA alphabets and characters you'd mentioned like "$", <Double quotes>, "<", ">" and etc. Seems like it has almost all characters since its a dictionary folder Smilie

Fortunately, none of them are linked to one another. They are all individual txt files.

Targeted directories could be in same directories but there's no folders yet in that Folder. Probably have to mkdir
Creating the needed directories is no problem. They can easily be created on the fly as needed.

But... I still don't think I understand what you're trying to do.

The line you showed us above contains 20 hyphens, not 18. There are 18 hyphens before the 1st comma on that line. There are 19 hyphens between the [ and ] on that line. There are 20 hyphens on that line. You said you wanted to move files to a directory based on the number of hyphens on that line. Is there is different rule that describes which directory should get a file? Or, did you just miscount the hyphens on that line in your description above?

And please explain what:
Quote:
And the files have IPA alphabets and characters you'd mentioned like "$", <Double quotes>, "<", ">" and etc. Seems like it has almost all characters since its a dictionary folder Smilie
means. What does "the files have IPA alphabets" mean? I asked if your filenames contain any of the characters in the list $, ", ', and the <newline> character. I didn't ask if those characters appear in the file contents; I asked if they appear in any of your files' filenames. And, what is an "IPA alphabet"?

If your filenames contain <newline> characters, I need to completely rethink what I was planning to do. If your filenames contain <dollar-sign> characters or <double-quote> characters, I can use <single-quote> characters to delimit filenames passed to rm. If your filenames contain <single-quote> characters as well, you can use <single-quote>s to quote everything except <single-quote>s and use <double-quote>s to quote <single-quote>s. But, this is sounding more and more like a job than something that is fun to do as a forum volunteer.

For people reading this who don't understand why find -print0 and xargs -0 can't be used to solve this problem, those options do not exist in those utilities on OS X. And, even if it did:
Code:
xargs -I"{}" mv "{}" target_dir

only processes one file at a time and executing mv 690,000 times is going to take forever. And, mv on OS X doesn't have a -t target_directory option. And, even with the relatively large ARG_MAX limit of 262144 on OS X, it won't be possible to move all of the files for a single directory in a single mv command. So, this project requires implementing a simplified command-line argument aggregator (i.e., with a superset of a subset of xargs capabilities) that can construct mv command lines with multiple file operands followed by a fixed directory operand that xargs can't create. (This could be handled by a simple helper shell script, but only if the filenames do NOT contain any <newline> characters.)
This User Gave Thanks to Don Cragun For This Post:
# 23  
Old 05-15-2015
Oh, sorry I kind of miscounted the hyphens Smilie and yes I was basically too focused just on the word that I forgot to count other hyphens on the line as well.
What I really wanted to do was to sort by hyphen between the first word of 3rd line which is inside []

And about the IPA characters/symbols, I don't think it matters as I didn't realise you were asking just for the file names. However, the file contents contains IPA symbols [International Phonetic Alphabet] like "æʊθʃŋː" to guide me to pronounce the words. For example, to pronounce apple, I refer to either [ap-uh l] OR /ˈæp əl/ written on the 3rd line of the file. Sorry, I guess I was kinda distracted in the morning as well.

Some of my file names include "!", ".", "+" instead of space. Other than that, it is all single lined file name. And there isn't any quotes.

Sorry I thought it would be simple to execute/manipulate commands to 3rd line in txt files but seems like I am in deep deep trouble for a beginner Smilie It doesn't have to be done as this is just one of my personal project Smilie I apologize for all the trouble caused Smilie
# 24  
Old 05-15-2015
Quote:
Originally Posted by Nexeu
Oh, sorry I kind of miscounted the hyphens Smilie and yes I was basically too focused just on the word that I forgot to count other hyphens on the line as well.
What I really wanted to do was to sort by hyphen between the first word of 3rd line which is inside []

And about the IPA characters/symbols, I don't think it matters as I didn't realise you were asking just for the file names. However, the file contents contains IPA symbols [International Phonetic Alphabet] like "æʊθʃŋː" to guide me to pronounce the words. For example, to pronounce apple, I refer to either [ap-uh l] OR /ˈæp əl/ written on the 3rd line of the file. Sorry, I guess I was kinda distracted in the morning as well.

Some of my file names include "!", ".", "+" instead of space. Other than that, it is all single lined file name. And there isn't any quotes.

Sorry I thought it would be simple to execute/manipulate commands to 3rd line in txt files but seems like I am in deep deep trouble for a beginner Smilie It doesn't have to be done as this is just one of my personal project Smilie I apologize for all the trouble caused Smilie
Thanks for the information. That helps a lot. I think I'll be able to pull something together this weekend that should work, but I still need a little more information.
  1. I believe that you want to count the number of hyphens between the [ at the start of the third line in a file and the first space or ] that follows it on that line. Is that correct?
  2. If for some reason a file is unreadable, contains less than three lines, or the third line does not contain an open square bracket ([) followed by a close square bracket (]), should that file be moved to the 0H directory (since there aren't any hyphens on the 3rd line), left where they are (with no notice printed), left where they are with a message explaining why the file was not moved, or moved to another directory (perhaps named Unknown)?
  3. I believe that the first character on the third line will always be a [ character. Is that always the case, or should the script verify the line format before counting hyphens?

P.S. I was wrong about find -print0 and xargs -0 on OS X (they are supported), but they won't help in this case. But the non-standard option that would really help here (mv -t destination_directory) is not available on OS X.
This User Gave Thanks to Don Cragun For This Post:
# 25  
Old 05-16-2015
Thank you so much for very thoughtful questions. Smilie It makes it easier put into words now Smilie

Yes I would like to count hyphens just in between the [] on the 3rd line. Smilie

If the filename is just one word, I believe there will always be [] on 3rd line.

However, if that one worded filename's pronunciation has only one sound like kill, day, ball, and etc, there will be no hyphen in it.

For example,
kill.txt

Code:
****** kill1 ******

[kil]  /kɪl/
IPA Syllables

And filenames with more than one word like this will have no brackets and no hyphens on the 3rd line.

Like this,

cats and dogs.txt

Code:
****** cats and dogs ******
Slang definitions & phrases for cats and dogs Expand
**** cats and dogs ****
noun phrase
Low-priced stocks, such as those returning no dividends at all (1870s+ Stock market)
Related Terms
rain cats and dogs

So yes if there are still [] on the 3rd line but no hyphens, I would want to move it to 0H folder.

Those with 1 hyphen for 1H, and 2 for 2H, and so on.

But if there isn't any brackets at all, it would probably be left behind or put into unknown like you mentioned.

I think its best to verify if there's [ before counting hyphens as I believe there's many of [] beyond the 3rd line in some file.
# 26  
Old 05-16-2015
Quote:
Originally Posted by Nexeu
Thank you so much for very thoughtful questions. Smilie It makes it easier put into words now Smilie

Yes I would like to count hyphens just in between the [] on the 3rd line. Smilie

If the filename is just one word, I believe there will always be [] on 3rd line.

However, if that one worded filename's pronunciation has only one sound like kill, day, ball, and etc, there will be no hyphen in it.

For example,
kill.txt

Code:
****** kill1 ******

[kil]  /kɪl/
IPA Syllables

And filenames with more than one word like this will have no brackets and no hyphens on the 3rd line.

Like this,

cats and dogs.txt

Code:
****** cats and dogs ******
Slang definitions & phrases for cats and dogs Expand
**** cats and dogs ****
noun phrase
Low-priced stocks, such as those returning no dividends at all (1870s+ Stock market)
Related Terms
rain cats and dogs

So yes if there are still [] on the 3rd line but no hyphens, I would want to move it to 0H folder.

Those with 1 hyphen for 1H, and 2 for 2H, and so on.

But if there isn't any brackets at all, it would probably be left behind or put into unknown like you mentioned.

I think its best to verify if there's [ before counting hyphens as I believe there's many of [] beyond the 3rd line in some file.
OK. We're making progress, but I still don't have clear requirements. Please answer each of the following questions:
  1. You gave an example in post #21 you showed us a line 3 that contained 20 hyphens. Of those, 19 were between the [ and the ]. You originally said you wanted that file to go into the folder 18H, which was the number of hyphens between the [ and the comma and space that appears before the ]. Are you now saying that file should go into 18H (the number of hyphens between the [ and the closest following space or ]), or should that file go into 19H (the number of hyphens between the [ and the ])?
  2. If a filename contains one or more spaces (e.g., cats and dogs.txt) there is no need to look at the contents of the file. Is this correct? Should that file be left in its current location or moved to 0H?
  3. For files that do not have a space in the filename, verify that the 1st character on the third line is a [. If it isn't what should I do? Leave the file where it is and move on to the next file? Keep reading lines in that file until I find a line where the first character on the line is a [ and move that file based on the number of hyphens on that line? If you want something other than these choices, please give detailed, explicit directions on what to do.
  4. What is the name of the directory containing these 690,000 files?
  5. What directory should be used as the target directory where the directories 0H, 1H, etc. be created?
This User Gave Thanks to Don Cragun For This Post:
# 27  
Old 05-16-2015
Yes I wanted [noo-muh-noh-uhl-truh-mahy-kruh-skop-ik-sil-i-koh-vol-key-noh-koh-nee-oh-sis, nyoo-] inside 18H, overlooking that there was one more - after the , Smilie . The files normally doesn't have , inside [] .
Initially I wanted to sort by the amounts of - in the first word inside [] on the 3rd line but it seems harder and harder. It's alright though. As long as the script move the file by the amount of - in [] be it at the 2nd word or more, I could still use it.

And yes if the file name is more than one word, there won't be [] on 3rd line, so no need to look at the contents of the file.
For files that do not have a space in the filename, verify that the 1st character on the 3rd line is a [ . And if it isn't, should be left behind as well.
Every file without [] on 3rd line should be left behind as 0H should only contain files that still has [] but no - on 3rd line.

The directory of the dictionary containing is this : /Users/Nexeu/Documents/Dict
And I wished to have targeted directory at /Users/Nexeu/Documents/Syllable/
Something like this
Code:
/Users/Nexeu/Documents/Syllable/0H
/Users/Nexeu/Documents/Syllable/1H
/Users/Nexeu/Documents/Syllable/2H

# 28  
Old 05-16-2015
The number of hyphens in the 1st word is no problem as long as I know that is what you want.

I still have one unanswered question from question #2 in my last post:
Quote:
If a filename contains one or more spaces (e.g., cats and dogs.txt) there is no need to look at the contents of the file. Is this correct? Should that file be left in its current location or moved to 0H?
This User Gave Thanks to Don Cragun For This Post:
 
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