linux эквивалент dir / b / s / a: -D (вывести полный путь всех файлов рекурсивно)

Я только сегодня перешел на Linux, и я хотел бы знать, как это сделать с помощью команды ls (что лучше для вас). Идея состоит в том, чтобы получить все файлы с полным путем в каталоге, включая подкаталоги … Я использовал команду cmd:

dir /b /s /a:-D 

Насколько я могу судить, ваша команда dir спускается в подкаталоги ( /S ), пропуская заголовки и сводки ( /B ) и пропуская файлы, каталог которых установлен в качестве атрибута ( /A:-D )

Переносимый способ сделать это в Linux будет через команду find – по умолчанию он спускается в подкаталоги, и его можно сделать так, чтобы пропустить каталоги, добавив -not -type d ( ! Может использоваться как синоним для -not )

По умолчанию он сообщает пути относительно начальной точки, поэтому для получения абсолютных путей вы можете использовать текущую переменную рабочего каталога оболочки PWD :

 find "$PWD" -not -type d 

Если вы используете оболочку, которая поддерживает рекурсивное сопоставление с шаблоном (также называемое «globstar») и квалификаторы glob, есть и другие варианты – например, в zsh вы можете сделать

 ls -1d **/*(^D:A) 

или просто

 printf '%s\n' **/*(^D:A) 

Вы также можете подумать, действительно ли вы хотите “не каталоги” или “простые файлы”:

 find "$PWD" -type f 

или (зш)

 printf '%s\n' **/*(.:A)