i to wciąż pozostawia prefiks „./” do każdej nazwy pliku. To naprawdę nie jest problem, ale myślę, że to trochę brzydkie. Poszedłem z:
ls -p | grep -v '/$'
Dzięki temu otrzymasz listę, która wygląda tak samo i możesz dodać dodatkowe lsargumenty. Dodaj a, --color=alwaysa odzyskasz dircolors lub -azobaczysz ukryte pliki.
Podoba mi się odpowiedź Aleksandra, ponieważ tak naprawdę zależy on od systemu plików charakterystycznego dla danego pliku, więc nie da się go oszukać. Moja odpowiedź zostanie oszukana przez plik, który ma „/” jako ostatni znak w nazwie. Ale wygląda na to, że wymaga kłopotów.
„-not” jest powiązany ze znalezieniem GNU, ponieważ nie jest zgodny z POSIX, lepiej nie uczyć tych opcji, ponieważ użytkownik może mieć „złe” nawyki i czuć się zagubiony na innych
UNIXACH
2
@JiriXichtkniha jaka jest alternatywa POSIX dla -not?
Ta odpowiedź została już udzielona ponad rok wcześniej przez jamzed (powodując ten wizualny hałas.)
Alexx Roche
2
Powyższe rozwiązania „znajdź” tracą niektóre możliwości ls - na przykład: wyświetlaj tylko pliki, posortowane według malejącego czasu modyfikacji.
Odpowiedzi „ls -p | grep” nie zajmują się elegancko innymi elementami ls, takimi jak -R, gdyby były pożądane
Poniższa odpowiedź, choć bardziej szczegółowa, moim zdaniem odzwierciedla najprawdziwsze zachowanie ls i największą elastyczność w wybieraniu „tylko plików”
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Wystarczy wymienić przełączniki ls zgodnie z potrzebami, a wynik zostanie zwrócony tylko z plikami. Jeśli wymagane są również linki i inne elementy, należy przeprowadzić drobną przeróbkę testu w celu włączenia.
Dzięki temu możesz nadal korzystać z innych opcji, które lszwykle biorą. Lub ... usuń, -vaby wyświetlić tylko katalogi. Lub ... zamień katalog na inny typ pliku, który filerozumie i raportuje, jak ASCII, pusty, ELF i tak dalej.
Nie działa to, jeśli którakolwiek z nazw plików, które mają być wymienione, zawiera spacje.
Psychonauta,
ls -t .|while read f;do [ -f "$f" ]&& echo $f;donejest około 3 razy szybszy w moich testach
Alexx Roche
0
Byłem w systemie, w którym findplik binarny nie obsługiwał -noti skończyło się na użyciu:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Zalety: Nie polega na niczym innym niż sh ls echo
Jest kompatybilny z bash i myślnikiem
Można go zmienić, aby pasował do innych rzeczy (takich jak katalogi), zmieniając -f
Jest szybszy niż niektóre odpowiedzi i zużywa mniej pamięci RAM i procesora
ls .
bez katalogów - i oto jest.-ls
lub-exec ls -l {} \;
sprawiłoby, że byłoby tols -l
bez katalogów.Aby uzyskać dokładnie taką samą wartość,
ls .
nie musisz pokazywać ukrytych katalogów.find . -maxdepth 1 -not -type d -and -not -name '.*'
i to wciąż pozostawia prefiks „./” do każdej nazwy pliku. To naprawdę nie jest problem, ale myślę, że to trochę brzydkie. Poszedłem z:
ls -p | grep -v '/$'
Dzięki temu otrzymasz listę, która wygląda tak samo i możesz dodać dodatkowe
ls
argumenty. Dodaj a,--color=always
a odzyskasz dircolors lub-a
zobaczysz ukryte pliki.Podoba mi się odpowiedź Aleksandra, ponieważ tak naprawdę zależy on od systemu plików charakterystycznego dla danego pliku, więc nie da się go oszukać. Moja odpowiedź zostanie oszukana przez plik, który ma „/” jako ostatni znak w nazwie. Ale wygląda na to, że wymaga kłopotów.
źródło
Spróbuj tego:
albo to:
źródło
Chociaż jest to stary post, ale pomyślałem, że to może pomóc ...
$ ls -l | grep -v ^ d
Wyświetli listę wszystkich plików, w tym dowiązań symbolicznych, znaków i plików bloków.
źródło
Powyższe rozwiązania „znajdź” tracą niektóre możliwości ls - na przykład: wyświetlaj tylko pliki, posortowane według malejącego czasu modyfikacji.
Odpowiedzi „ls -p | grep” nie zajmują się elegancko innymi elementami ls, takimi jak -R, gdyby były pożądane
Poniższa odpowiedź, choć bardziej szczegółowa, moim zdaniem odzwierciedla najprawdziwsze zachowanie ls i największą elastyczność w wybieraniu „tylko plików”
Wystarczy wymienić przełączniki ls zgodnie z potrzebami, a wynik zostanie zwrócony tylko z plikami. Jeśli wymagane są również linki i inne elementy, należy przeprowadzić drobną przeróbkę testu w celu włączenia.
źródło
Dzięki temu możesz nadal korzystać z innych opcji, które
ls
zwykle biorą. Lub ... usuń,-v
aby wyświetlić tylko katalogi. Lub ... zamień katalog na inny typ pliku, któryfile
rozumie i raportuje, jak ASCII, pusty, ELF i tak dalej.źródło
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
jest około 3 razy szybszy w moich testachByłem w systemie, w którym
find
plik binarny nie obsługiwał-not
i skończyło się na użyciu:Zalety: Nie polega na niczym innym niż
sh ls echo
Jest kompatybilny z bash i myślnikiem
Można go zmienić, aby pasował do innych rzeczy (takich jak katalogi), zmieniając
-f
Jest szybszy niż niektóre odpowiedzi i zużywa mniej pamięci RAM i procesora
źródło