I'm currently trying to write a ksh or csh script that would change the name of a file found in directories and attach to the name an incrementing three digit number.
I know how to write a script that will go:
000, 001, 002, 003, etc
The twist is I need more increments then allowed by a 3 digit number so I want to use letters too. For example:
008, 009, 00A, 00B, 00C --- 00Z, 010, 011, 012, 013 --- 099, 0AA, 0AB --- 0ZZ, 100, 101, etc
Any slick ways of doing this? I searched for it but couldn't find anything like this on the forum.
It's not the eval which generates the data; it's brace expansion.
Since the original poster's problem requires a fairly long sequence of digits, for brevity I wanted to avoid:
Storing the list in the variable $digits allows me to do that. However, since brace expansion occurs before variable expansion, we need to send the command line through the shell's parser a second time, using eval. Otherwise we just get:
Instead of:
Note: Brace expansion does not occur if there is no unquoted comma within the braces, so we do not need to quote {$digits}.
A downside to this approach is that if the list of digits is long enough, or if there are many braced terms to expand, the list of resulting words could exceed the command line length limit. In such a case, your approach is superior as it never needs to execute a long command line. Another way around this limitation would be to write it out explicitly in the for loop: IMPORTANT: Brace expansion is not a posix-standardized feature, so if that's a concern, my approach is not an option; yours would be the better choice. Also, the order of brace expansion in relation to parameter expansion as described above is BASH specific (which I chose to use for the illustrative examples since it's much more popular than ksh, and because for this particular scenario it's the more complicated case). In pdksh, ksh88, and ksh93, brace expansion occurs after parameter expansion, not before. So, if using a ksh variant, neither the eval nor the echo nor the command substition is necessary (though in this case their presence does not affect the end result); a simple 'for i in {$digits}{$digits}{$digits}' would be sufficient.
Hope that helps. If not, feel free to ask for clarification.
Greetings!
I have a quick question which must be deferred to those with greater skill than myself :)
In this situation, I wish to create a list of all the files on an entire partition in descending order sorted by date. I tried numerous switches for ls, and found this line to be the closest... (4 Replies)
I have file1 and file2
I lookup field3 from file2 in field1 of file1 and if there is a match, output field 2,3,5 from file2.
I now want to add field2 of file1 in the output.
I suspect what I have to do is read the entire line of file1 into a 2 dim array? pls help. (1 Reply)
Hello folks!
Raised a bump on my head trying to figure this one out ;)
I have an xml file which needs to be edited, removing an entire property section in the work. Here's what the target section layout looks like:
<property name="something">
{any number of lines go here}
</property>... (7 Replies)
I have file1 and file2
I lookup field3 from file2 in field1 of file1 and if there is a match, output field 2,3,5 from file2.
I now want to add field2 of file1 in the output.
I suspect what I have to do is read the entire line of file1 into a 2 dim array? pls help.
here is my code:
... (9 Replies)
Hi, I'm sorry I'm no coder so I came here, counting on your free time and good will to beg for spoonfeeding some good code. I'll try to be quick and concise!
Got file with 50k lines like this:
"Heh, heh. Those darn ninjas. They're _____."*wacky
The "canebrake", "timber" & "pygmy" are types... (7 Replies)
Hi, a brief introduction on the soundex python module(english sound comparison):
import soundex.py
a = "neu yorkk"
b = "new york city"
print soundex.sound_similar(a, b)
output:
1
Suppose I want to merge two files, called mergeleft.csv and mergeright.csv
Mergeleft.csv:
... (0 Replies)
Hello Everyone,
I am using the korn shell.
I was hoping to find a set of commands to count files in a directory.
I am using:
ls /home/name/abc* | wc -l
This command works fine when a file matches abc* (returns only the file count) , however when no file(s) are found I get... (2 Replies)
Hey all,
I am working on a static analysis tool and I wan't to see if it can find bugs in the linux kernel, it uses LLVM framework to analyse the instructions.
Long story short I need to build the kernel with a custom compiler. The compiler will create byte code files where binaries usually... (2 Replies)
Ok so I have a file which contains 2 columns/fields and I have another file with 2 columns. The files look like:
file1:
1 33
5 345
18 2
45 1
78 31
file2:
1 c1d2t0
2 c1d3t0
3 c1d4t0
4 c1d4t0
5 c2d1t0
6 c2d1t0
7 c2d1t0
8 c2d1t0
9 c2d1t0
10 c2d1t0 (11 Replies)
I know this topic has been covered in one form or another, but it hasn't been covered to handle my problem.
I was given a Sparc4 running Solaris 2.5.1
The root password is unknown. This machine has no cdrom drive and it has no floppy drive.
I tried booting into the single user mode, but... (1 Reply)