ls -d */ 一部のフォルダでは動作しますが、他のフォルダでは動作しません。

ls -d */ 一部のフォルダでは動作しますが、他のフォルダでは動作しません。

私はUbuntu 16.04.1 LTSリモートサーバーを使用しており、 "NewsData"という名前のこのフォルダのディレクトリを一覧表示できます。このコマンドはls -d */フォルダを一覧表示するのに最適なコマンドですが、一部のフォルダでは有効ですが、他のフォルダでは無効です。 。

以下はサンプル出力です。

(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

なぜこれが起こるのですか?この問題をどのように解決できますか?

答え1

ディレクトリにはサブディレクトリが含まれているため、-シェル*/の拡張子には-/コマンドオプションとして誤って解釈されるものが含まれます。

--つまり、以下を使用してオプションの終わりを明示的に表示することで、これを回避できます。

ls -d -- */

または glob の前にパスを追加します。

ls -d ./*/

答え2

find . -maxdepth 1 -type d ! -name "\.*"

「-d」は、私が理解しているディレクトリだけをリストすることを意味します。

関連情報