Я думаю, что следующее является решением моей проблемы. После выполнения
sudo apt-get update
sudo apt-get upgrade
Я также должен работать
sudo apt-get dist-upgrade
и затем перезагрузите сервер. Это, казалось, работало на меня, но если у кого-либо есть больше опыта, не стесняйтесь редактировать этот ответ, комментировать его или предоставлять лучший ответ.
Чтобы получить точный эквивалент ls.
, вам не нужно показывать скрытые каталоги.
find. -maxdepth 1 -not -type d -and -not -name '. *'
и это по-прежнему оставляет вас с префиксом './' перед каждым именем файла. На самом деле это не проблема, но я думаю, что это некрасиво. Я выбрал:
ls -p | grep -v '/ $'
И вы получите список, который выглядит так же, и вы также можете добавить дополнительные аргументы ls
. Добавьте - color = always
, и вы вернете свои dircolors, или -a
, чтобы увидеть скрытые файлы.
Мне нравится ответ Александра, потому что он фактически зависит от файловой системы характеристика файла, о котором идет речь, чтобы его никогда не обмануть. Мой ответ обманет файл с символом '/' как последний символ в его имени. Но похоже, что это напрашивается на неприятности.
попробуйте следующее:
$ find. -тип f -maxdepth 1
или это:
$ ls -p | egrep -v / $
$ ls -la | egrep -v ^ d
Хотя это старый пост, но я подумал, что это может помочь ..
$ ls -l | grep -v ^ d
Он перечислит все файлы, включая символические ссылки, символы и блокировать файлы.
ls $(file --no-pad -F' ' * | grep -v directory | cut -d' ' -f1)
При этом вы все равно можете использовать любые другие параметры, обычно требуемые ls
.
Или ... удалите -v
, чтобы отобразить только каталоги.
Или ... замените каталог любым другим типом файла, который файл
понимает и сообщает, например ASCII, пустой, ELF и т. Д.
Приведенные выше решения «найти» теряют некоторые возможности ls - например: список только файлов, отсортированных по убыванию времени модификации.
Ответы «ls -p | grep» не изящно работают с другими элементами ls, такими как -R, если они желательны
Следующий ответ, хотя и более подробный, на мой взгляд, отражает наиболее верную ls поведение и наибольшая гибкость для выбора «только файлы»
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Просто замените переключатели ls по желанию, и результат будет возвращен только с файлами. Если также требуются ссылки и другие элементы, необходимо будет провести небольшую переработку теста на включение.
Я был в системе, где бинарник find
не поддерживал -not
, и в итоге я использовал его:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Преимущества:
Не полагается ни на что, кроме shs echo
совместим с bash и dash
.
Может быть изменено в соответствии с другими вещами (например, каталогами) путем изменения -f
Быстрее некоторых ответов и использует меньше оперативной памяти и процессора