Qual è la controparte DOS del comando bash "ls -lad" su Unix?


3

Qual è la controparte DOS del comando bash ls -lad su Unix?

Il comando "dir" su Command Prompt (cmd.exe) su Windows è solitamente considerato equivalente al comando "ls" di bash su Unix / Linux. Tuttavia, "dir" non ha la caratteristica dell'opzione "-d" di "ls". L'opzione "-d" tratta le directory come semplici file e impedisce la visualizzazione dei file secondari e delle sottodirectory.

ls -lad ITEM
  1. Fondamentalmente, ciò di cui ho bisogno è l'esistenza e il tipo di ITEM dato.
  2. Per quanto riguarda il tipo, ho bisogno di sapere se si tratta di una directory, un file normale o un collegamento.
  3. Se si tratta di una directory, non voglio che vengano visualizzati i suoi file figli né le sottodirectory.
  4. Se è un collegamento, ho bisogno di sapere l'obiettivo.

Esiste un comando DOS (o anche un comando PowerShell) con queste funzionalità (da 1) a (4)?

dir ITEM /a
attrib ITEM

Il comando "attrib" su DOS indica anche l'esistenza del dato ITEM; e, se si tratta di una directory, "attrib" si astiene dal mostrare i suoi file secondari e sottodirectory. Tuttavia, "attrib" non riesce a stabilire se si tratti di una directory, di un file normale o di un collegamento.

Risposte:


3

Qual è la controparte DOS del comando bash ls -lad?

Non esiste un equivalente diretto. È possibile, naturalmente, installare Cygwin o il sottosistema Windows per Linux ed eseguire ls -lad direttamente.

Puoi anche creare un file batch che farà la maggior parte di ciò che desideri. Di seguito sono riportati alcuni suggerimenti.

Per verificare l'esistenza di un file:

if exist filename (
  echo filename exists
  )

Per verificare se un file è una directory:

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

Per verificare se un file è un collegamento:

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

Per verificare se una directory è un collegamento:

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

Per ottenere il target di un collegamento file:

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

Per ottenere il target di un collegamento di directory:

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

Ulteriori letture

  • Un indice A-Z della riga di comando di Windows CMD - Un eccellente riferimento per tutte le cose relative alla linea Windows cmd.
  • dir - Visualizza un elenco di file e sottocartelle.
  • trova - Cerca una stringa di testo in un file & amp; mostra tutte le linee dove è stato trovato.
  • per / f - Comando loop: contro un set di file - esegui condizionatamente un comando su ogni elemento.
  • Se - Esegui condizionatamente un comando.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.