bash --- szukanie plików w bież

Potrzebujesz pomocy z C, C++, perl, python, itp.
dawideo
Beginner
Posty: 154
Rejestracja: 25 czerwca 2007, 11:46
Lokalizacja: Zbychowo

bash --- szukanie plików w bieŻącym katalogu

Post autor: dawideo »

Jako prace domową muszę napisać parę prostych skryptów. Oczywiście w tych sprawach jestem laikiem :] (ale nie chcę by ktoś za mnie je napisał) tylko proszę o małą wskazówkę. Otóż zadaniem jednego z moich skryptów ma być wyszukanie plików z rozszerzeniem *.txt (i coś tam z nimi robi) w bieżącym katalogu. Do wyszukania plików użyłem:

Kod: Zaznacz cały

find -type f -printf "%p\n" | grep .txt$
Ale to polecenie znajduje (chyba) wszystkie pliki *.txt w systemie. A mi chodzi tylko o to by przeszukiwał bieżący katalog (ewentualnie podkatalogi).
Jakieś propozycje?
.
thalcave
Junior Member
Posty: 526
Rejestracja: 03 maja 2007, 19:57
Lokalizacja: gdynia

Post autor: thalcave »

Kod: Zaznacz cały

find . -type f -iname "*.txt"
to chyba wystarczy. Ta kropka zaraz po find wskazuje aktualny katalog
dawideo
Beginner
Posty: 154
Rejestracja: 25 czerwca 2007, 11:46
Lokalizacja: Zbychowo

Post autor: dawideo »

Podziękowania wielkie, a jak zrobić aby nie podawał całej ścieżki do pliku tylko jego nazwę?
droopy
Posty: 28
Rejestracja: 27 kwietnia 2008, 02:03

Post autor: droopy »

dawideo, użyj manuala:

Kod: Zaznacz cały

man find
ewentualnie tutaj: http://bartus.yyy.pl/files/so2/find.zip masz trochę ładniejszego manuala

btw. find . -type f -iname "*.txt" znajduje pliki nie w bieżącym katalogu, tylko w całym drzewie od bieżącego poczynając, jest opcja do ograniczenia głębokości szukania, jaka - do manuala odsyłam ;)
thalcave
Junior Member
Posty: 526
Rejestracja: 03 maja 2007, 19:57
Lokalizacja: gdynia

Post autor: thalcave »

Kod: Zaznacz cały

find . -type f -iname "*.txt" -printf "%f\n"
dawideo
Beginner
Posty: 154
Rejestracja: 25 czerwca 2007, 11:46
Lokalizacja: Zbychowo

Post autor: dawideo »

Ok
Dzięki waszej pomocy udało mi się napisać swój 1 prosty skrypcik. No prawie :) mam jeszcze 1 mały błąd. Otóż nie działa mi "rm -i" w skrypcjie

Kod: Zaznacz cały

#!/bin/bash
# Program 
if [ $# -eq 0 ]; then
echo "Nie wybrales parametru"
elif [ $# -gt 1 ]; then
echo "Wybrales za duzo parametrow"
else
select x in w s exit

do
	case $x in
	"w") find * -type f -size -1024c -iname "*.txt" -printf "%f\n" | xargs rm -i >>dane.txt;;
	"s") find * -type f -size +1024c -iname "*.txt" | xargs tar -rf archiwum.tar; gzip archiwum.tar;;
	"exit") exit;;
	*) echo "Nie wybrano zadnej opcji opcji";;
	esac
	break
done
fi
Konsola po wpisaniu y (lub czegoś innego) wypisuje mi

Kod: Zaznacz cały

bash: y: command not found 
Natomiast ja wpisze "yes" jest jezcze gorzej konsola wypisuje same "y" jedna pod drugą:/
I totalnie nie mam pojęcia czemu:/. Według "man rm" dobrze napisałem tak mi się zdaje:/
P.s "rm -v" działa normalnie (wypisuje pliki które usuwa), to dlaczego "rm -i" nie działa??
Awatar użytkownika
czarownik
Beginner
Posty: 240
Rejestracja: 22 maja 2009, 17:23

Post autor: czarownik »

Witam.
Mam problem z wyszukaniem plików, chciałbym wyszukać pliki z przed pięciu dni, ale nie tylko z 5 dnia ale też z 5, 4, 3, 2, 1 dnia włącznie w:

Kod: Zaznacz cały

man find
znalazłem coś takiego

Kod: Zaznacz cały

 find . -mtime -5 -print
ale wyświetla mi tylko pliki z datą z przed 5 dni.
Czy da się to zrobić jakoś inaczej niż:

Kod: Zaznacz cały

find . -mtime -1 -print
find . -mtime -2 -print 
find . -mtime -3 -print 
find . -mtime -4 -print 
find . -mtime -5 -print
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

Awatar użytkownika
czarownik
Beginner
Posty: 240
Rejestracja: 22 maja 2009, 17:23

Post autor: czarownik »

Dziękuję działa :)
ODPOWIEDZ