Задачка

9 отговора 726 прегледа
#1

Задачка

В една директория имам много файлове ама много.
Как да намеря тези които са с еднакви имена и/или есктенжъни но ъпрър и лоуър кейс?
Например

ФАЙЛ.хлс
ФаЙл.ХЛС
фАйл.ХлС
файЛ
ФАЙЛ

и нт.

#unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep
Отговор
в отговор на l #3

sort -i ?

да не би подобно на tar & bzip2 кратката опция да е в няколко варианта?


SORT(1) User Commands SORT(1)

NAME
sort - sort lines of text files

SYNOPSIS
sort [OPTION]... [FILE]...

DESCRIPTION
Write sorted concatenation of all FILE(s) to standard output.

Ordering options:

Mandatory arguments to long options are mandatory for short options too.

-b, --ignore-leading-blanks ignore leading blanks

-d, --dictionary-order
consider only blanks and alphanumeric characters


-f, --ignore-case
fold lower case to upper case characters


-g, --general-numeric-sort
compare according to general numerical value

-i, --ignore-nonprinting
consider only printable characters

-M, --month-sort
compare (unknown) < `JAN' < ... < `DEC'

-n, --numeric-sort
compare according to string numerical value

-r, --reverse
reverse the result of comparisons

Other options:

-c, --check
check whether input is sorted; do not sort

-k, --key=POS1[,POS2]
start a key at POS1, end it at POS 2 (origin 1)

-m, --merge
merge already sorted files; do not sort

-o, --output=FILE
write result to FILE instead of standard output

-s, --stable
stabilize sort by disabling last-resort comparison

-S, --buffer-size=SIZE
use SIZE for main memory buffer

-t, --field-separator=SEP use SEP instead of non- to whitespace transition

-T, --temporary-directory=DIR
use DIR for temporaries, not $TMPDIR or /tmp multiple options spec­
ify multiple directories

-u, --unique
with -c: check for strict ordering otherwise: output only the first
of an equal run

-z, --zero-terminated
end lines with 0 byte, not newline

--help display this help and exit

--version
output version information and exit

POS is F[.C][OPTS], where F is the field number and C the character posi­
tion in the field. OPTS is one or more single-letter ordering options,
which override global ordering options for that key. If no key is given,
use the entire line as the key.

SIZE may be followed by the following multiplicative suffixes: % 1% of mem­
ory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.

With no FILE, or when FILE is -, read standard input.

*** WARNING *** The locale specified by the environment affects sort order.
Set LC_ALL=C to get the traditional sort order that uses native byte val­
ues.

AUTHOR
Written by Mike Haertel and Paul Eggert.

REPORTING BUGS
Report bugs to <[email protected]>.

COPYRIGHT
Copyright © 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
The full documentation for sort is maintained as a Texinfo manual. If the
info and sort programs are properly installed at your site, the command

info sort

should give you access to the complete manual.

sort (coreutils) 5.0 March 2003 SORT(1)


Satan`s Defloration Incorporated
Отговор
в отговор на ЛУД ПPЪЧ #4

Re: sort -i ?

oops, mea culpa. 'sort -i' да се чете 'sort -f'.

Thanks :)

П.П. Стандартния uniq не поддържа -i.

Отговор
в отговор на Gwydion #6

Re: Задачка

П.П.
Може и:
unzip;strip;touch;finger;mount;make all;more;yes;umount;sleep;who

Отговор
в отговор на l #7

Re: Задачка

Може и без uniq. GNU sort поддържа -u за unique и ще стане:

ls | sort -uf

Изглежда като да се помни лесно :)

Отговор
в отговор на hoopla #8

Re: Задачка

Човека иска списък на имената, които се повтарят, не уникалните имена.

Отговор
в отговор на l #9

Re: Задачка

Не съм дочел в бързината, сори.

Отговор
в отговор на Dilithium #10

Re: Задачка

Този малък пърл скрипт ще ти свърши работа, той работи коректно за всички варианти на големи малки букви във файлове с имена на латиница. За кирилски файлове работата е по-дебела и трябва правилно да ти е настроен локалът, за да може функцията lc /to lowercase/, да транслира правилно кирилицата.

Копни и пусни този текст във файл ето така:

cat > find-duplicate-files.pl
chmod +x find-duplicate-files.pl
./find-duplicate-files.pl

Успех.



!/usr/bin/perl

@list=`ls -1 | sort -f`;

$size=@list;
print "Files: $size\n\n";

for ($i=0;$i<($size-1);$i++)
{
$s1=lc($list[$i]);
$s2=lc($list[$i+1]);

if ($s1 eq $s2)
{
chomp $list[$i];
print "$list[$i] - $list[$i+1]";
}
}


---
His name is Wonderful .

Масклин: добавих тагове [ pre ]...[ /pre ] за да се вижда форматирането

Редактирано от Masklin на

Отговор