And I need it to return the file suffix with the highest numerical value. Therefore it should return 1042 but instead it's returning Client_944.log. Do you know why?
As a matter of fact: yes. You have already been helped and don't need sort any more for this, but it is perhaps beneficial to understand it because you sure will need it next time. So here it goes:
Per defaut sort sorts alphabetically, not numerical: that means "100" comes before "99", because "1" is "earlier" in the ASCII code than "9". Since you requested a reverse sort (sort -r) you got the "last" as first, which was "944". Here is an example that shows the problem: consider following input file:
Now sort it:
You need to tell sort to sort numerically to get the expected result:
But in your case only a part of the field to sort for is numeric, therefor you need to use a "key-definition". sort treats input as "records" (=lines), which consist of "fields", separated by field separators. The usual field separator is whitespace and the "fields" resemble therefore "words".
We need to explain to sort that only a certain part of the field is relevant for the sorting. The easiest way is to split the lines at the "_", so we use this as a field separator:
Notice this also takes care of the leading space which could have posed a problem if we would rely on whitespace. Now we have two fields in each line, before and after the underscore. We now need to tell sort that only the first 4 digits/characters in this field are relevant for the sorting (it doesn't matter that some numbers only have 3 digits, sort will throw characters out in this case). Key definitions are done that way:
Hence:
Now, we are only interested in certain lines in the file, so we need to filter these out beforehand. And we need to reverse the sort too:
Using the 'strings' command and piping the result to 'sort' is producing strange results. I get block of lines that begin with asterisks, then a block that begins with some text, then more lines that begin with asterisks. The actual content is correct - lines beginning with asterisks is the... (5 Replies)
I want to remove any files that are older than 2 days from a directory. It deletes those files. Then it comes back with a message it is a directory. What am I doing wrong here?
+ find /mydir -mtime +2 -exec rm -f '{}' ';'
rm: /mydir is a directory (2 Replies)
Disclaimer, I've been a Linux admin for a while but don't frequently setup rsysnc jobs.
Here's the command I'm running on CentOS 5.5, rsync 2.6.8:
rsync -arvz --progress --compress-level=9 /src/ /dest/
/src has 1.5 TB of data, /dest/ is a new destination and started out empy. Oh ya, both... (4 Replies)
Hi,
I have a problem with a shell script.
The script should find all .cpp and .h files and list them.
With:
for file in `find $src -name '*.h' -o -name '*.cpp'
it gives out this:
H:\FileList\A\E\F\G\newCppFile.cpp
H:\FileList\header01.h
H:\FileList\B\nextCppFile.cpp
... (4 Replies)
Here is the code, but the list is not sorted properly (alphabetically)?
<?php
function folderlist(){
$startdir = './';
$ignoredDirectory = '.';
$ignoredDirectory = '..';
if (is_dir($startdir)){
if ($dh = opendir($startdir)){
while (($folder = readdir($dh)) !== false){
if... (0 Replies)
Hi all,
I am writing script that returns the size of each disk or partition when called. I am using FDISK -l and parsing the results to get the result I want. When I execute fdisk -l it shows correct results, BUT when I execute the same thing with results to be put in a variable, I get strange... (5 Replies)
Hi guys,
I have the following example data:
A;00:00:19
B;00:01:02
C;00:00:13
D;00:00:16
E;00:02:27
F;00:00:12
G;00:00:21
H;00:00:19
I;00:00:13
J;00:13:22
I run the following sort against it, yet the output is as follows:
sort -t";" +1 -nr example_data.dat
A;00:00:19 (16 Replies)
I am using th following to get the percentage and have never used bc before:
percent=$(echo "scale=4;(34117/384000)*100" | bc)
8.884600
percent=$(echo "scale=2;(34117/384000)*100" | bc)
8.00
Why do I get the results of 8.00 instead of 8.88 when using a scale of 2. I only want 2 decimal... (2 Replies)
Hi--
Ok. I have now found that:
find -x -ls
will do what I need as far as finding all files on a particular volume. Now I need to sort the results by the file's modification date/time.
Is there a way to do that?
Also, I notice that for many files, whereas the man for find says ls is... (8 Replies)