Jaki jest odpowiednik DOS polecenia bash „ls -lad” w systemie Unix?

3

Co to jest odpowiednik DOS polecenia bash ls -ladw Uniksie?

Polecenie „dir” w wierszu polecenia (cmd.exe) w systemie Windows jest zwykle uważane za równoważne poleceniu „ls” bash w systemach Unix / Linux. Jednak „dir” nie ma opcji „-d” opcji „ls”. Opcja „-d” traktuje katalogi jak zwykłe pliki i zapobiega wyświetlaniu ich plików potomnych i podkatalogów.

ls -lad ITEM
  1. Zasadniczo potrzebuję istnienia i rodzaju danego POZYCJI.
  2. Jeśli chodzi o typ, muszę wiedzieć, czy jest to katalog, zwykły plik czy link.
  3. Jeśli jest to katalog, nie chcę, aby wyświetlane były jego pliki potomne ani podkatalogi.
  4. Jeśli jest to link, muszę znać cel.

Czy istnieje jakieś polecenie DOS (lub nawet polecenie PowerShell) z tymi funkcjami (1) do (4)?

dir ITEM /a
attrib ITEM

Polecenie „attrib” w systemie DOS informuje również o istnieniu danego POZYCJI; a jeśli jest to katalog, „attrib” powstrzymuje się od wyświetlania plików potomnych i podkatalogów. Jednak „atrybut” nie określa, czy jest to katalog, zwykły plik czy łącze.

i7pj3qnuz
źródło

Odpowiedzi:

3

Co to jest odpowiednik DOS polecenia bash ls -lad?

Nie ma bezpośredniego odpowiednika. Możesz oczywiście zainstalować Cygwin lub podsystem Windows dla systemu Linux i uruchomić ls -ladbezpośrednio.

Możesz także utworzyć plik wsadowy, który zrobi większość tego, co chcesz. Poniżej znajduje się kilka wskazówek.

Aby sprawdzić istnienie pliku:

if exist filename (
  echo filename exists
  )

Aby sprawdzić, czy plik jest katalogiem:

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

Aby sprawdzić, czy plik jest linkiem:

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

Aby sprawdzić, czy katalog jest linkiem:

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

Aby uzyskać cel łącza do pliku:

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

Aby uzyskać cel łącza do katalogu:

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

Dalsza lektura

  • Indeks AZ wiersza polecenia systemu Windows CMD - doskonałe odniesienie do wszystkich rzeczy związanych z wierszem cmd systemu Windows.
  • katalog - Wyświetla listę plików i podfolderów.
  • znajdź - Wyszukaj ciąg tekstowy w pliku i wyświetl wszystkie wiersze, w których został znaleziony.
  • for / f - Polecenie pętli: przeciwko zestawowi plików - warunkowo wykonaj polecenie dla każdego elementu.
  • if - Warunkowo wykonaj polecenie.
DavidPostill
źródło