web-dev-qa-db-ja.com

Unixでのbashコマンド「ls-lad」のDOS対応部分は何ですか?

BashコマンドのDOSカウンターパートは何ですかls -lad Unixでは?

Windowsのコマンドプロンプト(cmd.exe)の「dir」コマンドは、通常、Unix/Linuxのbashの「ls」コマンドと同等であると見なされます。ただし、「dir」には「ls」の「-d」オプションの機能がありません。 「-d」オプションは、ディレクトリをプレーンファイルのように扱い、子ファイルとサブディレクトリが表示されないようにします。

ls -lad ITEM
  1. 基本的に、私が必要としているのは、与えられたITEMの存在とタイプです。
  2. タイプについては、ディレクトリなのか、通常のファイルなのか、リンクなのかを知る必要があります。
  3. それがディレクトリの場合、その子ファイルやサブディレクトリを表示したくありません。
  4. リンクの場合は、ターゲットを知る必要があります。

これらの機能(1)から(4)を備えたDOSコマンド(またはPowerShellコマンド)はありますか?

dir ITEM /a
attrib ITEM

DOSの「attrib」コマンドは、指定されたITEMの存在も通知します。また、ディレクトリの場合、「attrib」はその子ファイルとサブディレクトリの表示を控えます。ただし、「attrib」は、それがディレクトリであるか、通常のファイルであるか、リンクであるかを判別できません。

3
i7pj3qnuz

Bashコマンドls -ladのDOS対応部分は何ですか?

直接同等のものはありません。もちろん、CygwinまたはWindows Subsystem for Linuxをインストールして、ls -ladを直接実行することもできます。

必要なことのほとんどを実行するバッチファイルを作成することもできます。以下はいくつかのヒントです。

ファイルの存在を確認するには:

if exist filename (
  echo filename exists
  )

ファイルがディレクトリかどうかを確認するには:

if exists filename\nul (
  echo directory
) else (
  echo file
)

ファイルがリンクであるかどうかを確認するには:

dir /a:l filename | find "<SYMLINK>" >nul && echo file symbolic link

ディレクトリがリンクであるかどうかを確認するには:

dir /a:l filename | find "<SYMLINKD>" >nul && echo directory symbolic link

ファイルリンクのターゲットを取得するには:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename ^| find "<SYMLINK">`) do @echo %i

ディレクトリリンクのターゲットを取得するには:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename* ^| find "<SYMLINKD>"`) do @echo %i

参考文献

  • Windows CMDコマンドラインのA-Zインデックス -Windowsコマンドラインに関連するすべてのものの優れたリファレンス。
  • dir -ファイルとサブフォルダーのリストを表示します。
  • find -ファイル内のテキスト文字列を検索し、見つかったすべての行を表示します。
  • for/f -ループコマンド:ファイルのセットに対して-条件付きで各アイテムに対してコマンドを実行します。
  • if -条件付きでコマンドを実行します。
4
DavidPostill