Подтвердить что ты не робот

Список файлов с использованием команды ls в Linux с полным путем

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

Я хочу напечатать полное имя пути для определенного формата файла с помощью команды ls, пока я нашел фрагмент кода, который будет печатать все файлы в каталоге, но не полный путь.

for i in io.popen("ls /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
  if string.find(i,"%.*$") then 
     print(i) 
  end
end

это будет распечатывать весь файл в корневом режиме и поддиректории.

Вывод:

  0020111118223425.lvf
  2012
  2012 (2009).mp4
  3 Idiots
  Aashiqui 2
  Agneepath.mkv
  Avatar (2009)
  Captain Phillips (2013)
  Cocktail

Мне нужен вывод:

  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/0020111118223425.lvf           [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012/2012.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012 (2009).mp4                [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/3 Idiots/3 Idiots.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Aashiqui 2/Aashiqui 2.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Avatar (2009)/Avatar (2009).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Captain Phillips (2013).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Cocktail/Cocktail.mkv

EDIT: Я использовал все это, но не работал с моим кодом в LUA.

когда я использовал с моим кодом, он отображает неправильный каталог

for i in io.popen("ls -d $PWD/* /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
    if string.find(i,"%.*$") then
      print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/"..i)
    end
  end

не находит файлы в "/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7", он установил свои файлы корневого каталога машин.

4b9b3361

Ответ 1

Вы можете использовать

  ls -lrt -d -1 $PWD/{*,.*}   

Он также поймает скрытые файлы.

Ответ 2

Вы можете попробовать следующее:

ls -d $PWD/*

Ответ 3

Для перечисления всего с полным путем, только в текущем каталоге

find $PWD -maxdepth 1

То же, что и выше, но соответствует только конкретному расширению, нечувствительному к регистру (файлы .sh в этом случае)

find $PWD -maxdepth 1 -iregex '.+\.sh'

$PWD для текущего каталога, его можно заменить любой директорией

mydir="/etc/sudoers.d/" ; find $mydir -maxdepth 1

maxdepth предотвращает поиск в подкаталогах, например, вы можете установить его на "2" для перечисления элементов в дочерних элементах. Просто удалите его, если вам нужно его рекурсивное.

Чтобы ограничить его только файлами, можно использовать опцию -type f.

find $PWD -maxdepth 1 -type f

Ответ 4

Вы можете легко использовать следующее, чтобы перечислять только файлы:

ls -d -1 $PWD/*.*

для списка каталогов:

ls -d -1 $PWD/**

следующее, чтобы перечислить все (файлы/dirs):

ls -d -1 $PWD/**/*

Дополнительные полезные возможности:

-d список каталогов не их содержимое

-R рекурсивный

-1 список файлов на строку

-l использовать длинный формат списка

- список всех, включая записи, начинающиеся с. и..

- список всех, но не список подразумеваемых. и..

для получения дополнительной информации, просто введите следующие

ls --help 

Ответ 5

Это печатает все файлы, рекурсивно, из текущего каталога.

find "$PWD" | awk /.ogg/ # filter .ogg files by regex
find "$PWD" | grep .ogg  # filter .ogg files by term
find "$PWD" | ack .ogg   # filter .ogg files by regex/term using https://github.com/petdance/ack2

Ответ 6

Команда ls будет печатать только имя файла в каталоге. Почему бы не сделать что-то вроде

print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/" + i)

Откроется каталог с именем файла.

Ответ 7

Существует более чем один способ сделать это, проще всего я бы подумал:

find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7

также должно работать:

(cd /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7; ls | xargs -i echo `pwd`/{})

Ответ 8

У меня была эта проблема, и я использую следующее:

ls -dl $PWD/* | grep $PWD

Он всегда получал мне список, который я хотел, но ваш пробег может отличаться.

Ответ 9

Это сработало для меня:

ls -rt -d -1 $PWD/{*,.*}