ls -d * / funciona em algumas pastas e não em outras

2

Eu estou em um servidor remoto que é um Ubuntu 16.04.1 LTS e eu preciso listar apenas diretórios nesta pasta chamada "NewsData" Descobri que ls -d */ é um bom comando para listar pastas, mas funciona em algumas pastas e não em outras.

Abaixo está o exemplo de saída

(venv_p3.5) anjali@momo:/scratche/home/anjali$ ls -d */
archive/  DownloadImages/  fixed/  getNews/  html/  log/  MonumentData/  NewsData/  Pytorch-finetuning/  src/  TestData/  TrainData/  TrainData2/  venv_p3.5/  VGG16FeatureExtraction/
(venv_p3.5) anjali@momo:/scratche/home/anjali$ cd NewsData/
(venv_p3.5) anjali@momo:/scratche/home/anjali/NewsData$ ls -d */
ls: invalid option -- '/'
Try 'ls --help' for more information.
(venv_p3.5) anjali@momo:/scratche/home/anjali/NewsData$ ls 
-  A  B  C  cleanData.py  D  E  F  G  getList.py  H  I  J  K  L  M  N  O  P  Q  R  S  sequentialNumbering.sh  T  U  V  W  Y  Z

Por que isso acontece? como posso consertar isso?

    
por Anjali 14.08.2018 / 15:38

2 respostas

17

O diretório contém um subdiretório denominado - , de modo que a expansão de */ pelo shell inclua -/ , que está sendo mal interpretada como uma opção de comando.

Você pode evitar isso marcando o fim das opções explicitamente usando -- , ou seja,

ls -d -- */

ou prefixando a glob com um caminho

ls -d ./*/
    
por 14.08.2018 / 15:45
2
find . -maxdepth 1 -type d ! -name "\.*"

"- d" significa apenas listar esse diretório como eu o entendo.

    
por 14.08.2018 / 15:53