Как я могу избавиться от./ и../ в выводе ls

Я хочу удалить.. и. запись в ls выход. Как всегда, работает

ls . | sed '/^\.\./d;/^\.\//d'

не работает для меня (./ все еще здесь) и я не могу понять, почему.

2 ответа

Решение

ls имеет -A Вариант именно для этой цели:

ls -A

От man ls:

-A, --almost-all
              do not list implied . and ..

По умолчанию ls не печатает эти записи в первую очередь, ни те, чьи имена начинаются с ., Также он не печатает косую черту после имен каталогов. Это твоя равнина ls команда делает то, что предполагает, что у вас есть псевдоним (скорее всего) или, возможно, функция оболочки с таким именем в вашей среде. Вы можете перечислить текущие псевдонимы в вашей оболочке с помощью команды alias -p,

В любом случае, вы можете обойти псевдоним / функцию, не удаляя ее, используя абсолютный путь: /bin/ls, По крайней мере, в случае псевдонима вы можете указать -A возможность подавления . а также .., но если эта (нестандартная) опция поддерживается со значением, которое она имеет для GNU и BSD ls тогда он не будет подавлять другие точечные файлы (которые могут быть именно тем, что вы хотите).

Другие вопросы по тегам