Wpis z mikrobloga

Chcę wyświetlić z danego katalogu te pliki które kończą się na podaną wartość. Jak to poprawić by działało?

for i in $1/*; do
if grep -E "$2"$ &basename $i&; then
echo &basename $i&
fi
done

W miejscu & powinien być back stick, ale wykop nie pozwala go używać.
Wiem że można zrobic to inaczej, np. sedem, ale chcę w ten sposób.

#bash #linux
  • 14
@Matt23: Co to jest back stick ?

Czemu nie użyjesz ls *fraza
albo find -maxdepth 1 -name \*fraza ?

-maxdepth 1 oznacza głębokość 1 czyli tylko bierzący katalog bez wchodzenia w podkatalogi.
@toniejabylemewa: @Kryspin013: Przedtem zrobiłem inaczej, ale teraz, w formie samodoskonalenia, chcę trochę inaczej.

Skrypt otrzymuje dwa parametry, pierwszy to katalog, drugi to rozszerzenie. Teraz chcę przejść po wszystkich plikach w katalogu i sprawdzić grepem nazwę pliku. Tylko nie wiem jak wrzucić grepa w instrukcje warunkową, razem z parametrem $2 i dolarem symbolizującym koniec linii.

Przez back stick rozumiem ten apostrof nad tyldą.
@Matt23: nie wiem jak jest po angielsku po polsku to jest chyba akcent, jak chcesz go na wypoku pisać (tak samo jak inne niewidoczne znaki) to robisz back slash a potem akcent `

\`

Zamiast akcentu możesz też zrobić $( )
@Matt23: Nie rozumiem o co chodzi z
grep -E "$2"$ `basename $i`

Co robi ten $ za "$2"? I grep zagląda do plików które mu podajesz jako argument, dlatego jeśli grepem chcesz wyszukać podciag w ciagu to nie w ten sposób bo on będzie chciał zaglądnać do tego co mu zwraca `basename $i`
@Matt23: Nie no akurat twoim sposobem da się zrobić, nawet poprawiłem kod, tylko poprzez basename przekazujesz potokiem wynik do grepa:

for i in $1/*; do
if basename "$i" | grep -E "$2"$ ; then
basename "$i"
fi
done

I najważniejsze w twoim skrypcie basename wywalał błędy bo nie dałeś "" przy zmiennej $i więc on dosatał łańcuch załóżmy w formie zdjęcie nr 123.png i dzielił to na argumenty
zdjęcie
nr
123.png