Poszukiwanie plików zawierających swoją nazwę

0

Przepraszam jeśli problem jest banalny, ale dopiero zaczynam pisać najprostsze skrypty w bashu i nie umiem rozgryźć problemu. Jak przeszukać pliki w katalogu bieżącym, żeby znaleźć takie, które zawierają w sobie swoją nazwę? Na razie mam coś takiego:

for P in $(ls ./); do  #przeszukuję katalog bieżący
if [`cat $P | grep $P $P`] #i zawartość każdego pliku pod kątem jego nazwy
then echo "Plik $P zawiera w sobie swoją nazwę"
elif "Nie ma takich plikow"
fi

Zgłasza się tylko komunikat, że nieoczekiwany koniec pliku w linii 7 (C++ pokazuje tylko 6 linii - nie ma żadnych pustych znaków)
Dziękuję za wszelkie wskazówki - poddałam się po kilku dniach samodzielnych prób :-(

0

Na szybko:

  1. Jeśli do to również done.
  2. Po elif powinien być warunek - jeśli ma być bez warunku to używasz else.

EDIT: Jeśli chcesz tylko listy plików, to można to zrobić dużo prościej, tym bardziej że już masz komendę.

#!/bin/bash

for P in $(ls ./)
do 
	cat $P | grep $P

done
0

@xfin dalej źle. Najlepszą opcją będzie

find . -depth 1 -type f -exec sh -c 'for f do grep -l "$f" "$f"; done' {} +
0

Dziękuje Wam bardzo za wskazówki, ale czy dałoby się jednak jakoś rozwinąć ten mój pomysł? Skrypt autorstwa winerfresh to zdecydowanie level hard, ja zaczynam jako kompletny laik i staram się osiągnąć efekt za pomocą jak najprostszych poleceń (cat, grep, może wartość zmiennej, komunikat).

1 użytkowników online, w tym zalogowanych: 0, gości: 1