Hi All
I'm trying to take a .flac file and use metaflac to write
the tag info into a file, Then read the title portion of the tag and rename the original .flac file with this info.
lets call this script renameflac
now on the command line if I type:
This puts a file called tmp.txt in the /tmp directory
and in this file it looks like this:
ALBUM=Self Esteem
ARTIST=The Offspring
COMPOSER=The Offspring
DESCRIPTION=
DISCID=0912a612
GENRE=Just Plain Wierd
MUSICBRAINZ_DISCID=o33.enTD6BY0zF2.Wn..dIpgsFI-
TITLE=Self Esteem
TRACKNUMBER=1
TRACKTOTAL=18
I figure I could grab the TITLE= info to rename the file but I get stuck here:
renameflac myfile.flac
This just hangs
Is this because the metaflac commands uses its flags after the file name?
And is this even possible with bash?
Thanks for your time.
Last edited by vbslim; 11-27-2007 at 05:18 AM..
Reason: spelling
I don't write bash-scripts, so i can't give you a complete solution, but a few suggestions:
1) If you use a wildcard expansion like "*.flac" and then rename the files matched by that wildcard the results may or may not get obfuscated. Rename the *.flac-files to something intermediate like "*.flac.processed" and in a last step (after the for .... *.flac... do.....done-loop has finished) rename them again.
2) Maybe this is not posing a problem here, but generally it is better not to use the "for file in * ; do ....done", but a pipeline instead:
The reason is: wildcards are expanded by the shell. The shell tries to execute the line "for file in * ; do" and replaces the asterisk with a list of filenames matching it. Only then the command will be executed. If the wildcard now matches a very big list of files chances are you hit the limitation of the input line length (in POSIX 4k characters) and get an error. This will not be the case with the find command and the pipeline.
3) You write a file to /tmp without checking if this is possible. Usually it is, but it is a risk you are taking if you do not check that first. Two problems could arise: /tmp is full and you (your user account) is not allowed to write to there.
Either check first if you can indeed write or work in a pipeline instead of an intermediate file:
Thank you!
I belive I understand.
The problem using the find command is that the flac files are
named like this:
01_-_Track_1.flac
and the output file should be
Self_Esteem.flac
Actualy, The more I write and test this the less I understand
Perderabo has always told you how to solve the find problem - sorry for my sloppiness. Still, the above lines give me headaches: why use two different tools for a purpose where one would suffice?
In Bash shell - the ps -ef shows only the /bin/bash but the script name is not displayed ? Is there any way to get the script names for the process command ?
--- Post updated at 08:39 AM ---
in KSH (Korn Shell), my command output shows the script names but when run in the Bash Shell... (3 Replies)
So I'm trying to pass certain json elements as env vars and use them later on in a script.
Sample json:
JSON='{
"Element1": "file-123456",
"Element2": "Name, of, company written in, a very weird way",
"Element3": "path/to/some/file.txt",
}'
(part of the) script:
for s... (5 Replies)
How to run several bash commands put in bash command line without needing and requiring a script file.
Because I'm actually a windows guy and new here so for illustration is sort of :
$ bash "echo ${PATH} & echo have a nice day!"
will do output, for example:... (4 Replies)
In the bash below I am asking the user for a panel and reading that into bed. Then asking the user for a file and reading that into file1.Is the grep in bold the correct way to apply the selected panel to the file? I am getting a syntax error. Thank you :)
... (4 Replies)
# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi
espeacailly the top regex part?
---------- Post updated at 06:58 PM ---------- Previous update was... (1 Reply)
I have the following code and for some reason when I call the program using
/home/tcdata/tatsh/trunk/hstmy/bin/bash/raytrac.bash --cmod=jcdint.cmod
I get
hasArgument =
hasArgument = true
Somehow the array element is returning even though I have not chosen the option.
... (41 Replies)
hi,
i have a script that runs on bash and would like to run it on a machine that has csh and bash. the default setting on that machine is csh. i dont want to change my code to run it with a csh shell. is there any way i can run the script (written in bash) on this machine? in other words is there... (3 Replies)
Hi,
I use AIX (ksh) and Linux (bash) servers. I'm trying to do scripts to will run in both ksh and bash, and most of the time it works. But this time I don't get it in bash (I'm more familar in ksh).
The goal of my script if to read a "config file" (like "ini" file), and make various report.... (2 Replies)