proste skrypty linux

seryjna zmiana nazw
  find ./ -name "*.txt" -exec mv.sh {} \; 

cat mv.sh

notxt=`echo $1 | sed 's/txt/sub/'` 
mv "$1" "$notxt" 
echo $notxt
operacje na plikach ze spacjami w nazwach
#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

for name in `cat 1` ; do
        do=`echo $name | cut -f1 -d" "`
        echo $name/$do"00"\ Robocze 
done

IFS=$SAVEIFS
"naprawa" plików z czasem modyfikacji w przyszłości
touch wzor
find . -newer wzor -exec touch {} \;
znalezienie 100 największych plików w każdym z katalogów na serwerze
for name in */* ; do echo "$name" >> wielkosc_plikow.txt ;find "$name" -printf '%s %p\n'|sort -nr | head -n 100 >> wielkosc_plikow.txt ; done

To samo lepiej, chociaż nienajszybciej.

#!/bin/bash

if [ -z "$1" ] ; then
        echo podaj katalog do sprawdzenia
        exit
fi

tmp=`mktemp`
x=0
a=0
y=0
dir=$1


function policz {

cd $dir
for name in */* ; do
        if [ -d "$name" ] ; then
                echo "$name" >> $tmp ;
                find "$name" -printf '%s %p\n'|sort -nr | head -n 100 >> $tmp ; echo "----------" >> $tmp ;
        fi
done

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for name in `cat $tmp | grep -v "4096 "`; do

        size=$(echo $name | cut -f1 -d" ")
        # rozszerzenie - male litery
        ext=$(echo ${name:(-4)} | awk -F . '{if (NF>1) {print $NF}}' | tr A-Z a-z)

        # tylko linie z rozmiarem 
        if [ -z "`echo $size | tr -d 0-9`" ] ; then

                if [ $a -eq 1 ] ; then
                        big[$y]="$name"
                        y=$(($y+1))
                        a=0
                fi
                if [ -n "$ext" ] ; then
                        ext[$x]="$ext $size"
                        size[$x]="$size $ext"
                        x=$(($x+1))
                fi
        else
        a=1
        fi
done
IFS=$SAVEIFS

x=0
while [ $x -le $((${#ext[@]}-1)) ] ; do
                echo ${ext[$x]} >> $tmp.ext
                echo ${size[$x]} >> $tmp.size
                x=$(($x+1))
done

y=0
while [ $y -le $((${#big[@]}-1)) ] ; do
                echo ${big[$y]} >> $tmp.big
                y=$(($y+1))
done
}


policz
ilekatalogow=$(grep "\-\-\-\-\-" $tmp | wc -l)
ileplikow=$(wc -l $tmp.size | cut -f1 -d" ")
ext_najwieksze=$(head -n 30 $tmp.ext | grep -v "\-\-\-")
unikalne=$(cat $tmp.ext| cut -f2 -d"." | cut -f1 -d" " | grep -v ound | sort | uniq)
najwieksze=$(sort -r -n $tmp.big | head -n 30)

echo Raport TOP 100 rozszerzeń, ilość sprawdzonych katalogów: $ilekatalogow
echo ----------------------------------------------------------------------
echo 
echo "wszystkich sprawdzonych plików [top 100]  :" $ileplikow
echo 
echo "największe pliki wg. rozszerzeń [top30]   :"
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
        for name in $ext_najwieksze ; do
                echo -e "\t\t\t\t\t\t $name"
        done
IFS=$SAVEIFS
echo 
echo unikalnych rozszerzeń                                         : 
        for name in $unikalne ; do
                ile=$(grep $name $tmp.ext | wc -l)
                echo -e "\t\t\t\t\t $name \t\t $ile" 
        done
echo największe pliki                                      : 
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
        for name in $najwieksze ; do
                echo -e "\t $name"
        done
IFS=$SAVEIFS

rm $tmp $tmp.*
  
edycja strumieniowa

for name in `grep -r http * | cut -f1 -d”:„` ; do sed -i ‚s/http:/https:/g’ $name ; done

Zmiana nazw plików z jednego kodowania na drugie

for a in * ; do 
  b=`echo -n $a | recode cp1250..utf-8` ; 
  echo $b; mv "$a" "$b" ; 
done 
 
iconv --from-code=iso8859-2 --to-code=utf-8 file.1 > file.2

lub
http://www.j3e.de/linux/convmv/

Wyrażenia regularne, sed

=== 1

Mon Oct 07 22:06:25 2013 forum/195.117.208.109:1093 SENT CONTROL [forum]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' (status=1)
Mon Oct 07 22:06:26 2013 anita/91.195.93.178:59553 SENT CONTROL [anita]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.14 10.8.0.13' (status=1)
Mon Oct 07 22:06:26 2013 gliwice/83.230.1.251:2772 SENT CONTROL [gliwice]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9' (status=1)
Mon Oct 07 22:06:26 2013 katowice/79.190.138.22:63728 SENT CONTROL [katowice]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.18 10.8.0.17' (status=1)
Mon Oct 07 22:06:27 2013 gch/87.205.181.115:3455 SENT CONTROL [gch]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.22 10.8.0.21' (status=1)
cat server.log | grep ifconfig | grep PUSH | sed 's/.*\(\[.*\]\).*ifconfig\ \(.*\) 10.*/ \1 \2/'

[forum] 10.8.0.6
 [anita] 10.8.0.14
 [gliwice] 10.8.0.10
 [katowice] 10.8.0.18
 [gch] 10.8.0.22

=== 2

cośtam - ul. Zaci sze 11 11 -111 Tttttt 11111111111111111111111111 

"Beeeee ccccccc mgr inż. aaaaaaaaaa vvvvvvvvvv - 55-555 Kkkkkkk, Ttttt Mmmmm ul. Wwwwww 11 11111111111111111111111111 "

Bbb Ccccc Ggggggg BBB Beeeeeeeeee kkkkkkkkk - Kkkkkkkkkkkk 130 11-120 Aaaaaaaaaaaaaaa 11111111111111111111111111 

"Bbbbbbbbbbbb.bbb.bb Bbbbbbbbbbbbbbbb bbbbbb - ul. Sssssss1, 00-000 Kkkkkkkk 11111111111111111111111111 "
cat plik.csv | sed 's/\"//g' | sed 's/\(.*\).\(..[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*/\"\1\";\"\2\"/g'
linux/proste_skrypty_bash.txt · ostatnio zmienione: 2013/10/17 12:21 przez sid@rabarbar.net
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki