Ответ 1
Вы можете использовать
ls -lrt -d -1 $PWD/{*,.*}
Он также поймает скрытые файлы.
Многие обнаружат, что это повторяющиеся вопросы, но я задал все вопросы, прежде чем задать вопрос по этой теме, но никто не работал у меня.
Я хочу напечатать полное имя пути для определенного формата файла с помощью команды 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", он установил свои файлы корневого каталога машин.
Вы можете использовать
ls -lrt -d -1 $PWD/{*,.*}
Он также поймает скрытые файлы.
Вы можете попробовать следующее:
ls -d $PWD/*
Для перечисления всего с полным путем, только в текущем каталоге
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
Вы можете легко использовать следующее, чтобы перечислять только файлы:
ls -d -1 $PWD/*.*
для списка каталогов:
ls -d -1 $PWD/**
следующее, чтобы перечислить все (файлы/dirs):
ls -d -1 $PWD/**/*
Дополнительные полезные возможности:
-d список каталогов не их содержимое
-R рекурсивный
-1 список файлов на строку
-l использовать длинный формат списка
- список всех, включая записи, начинающиеся с. и..
- список всех, но не список подразумеваемых. и..
для получения дополнительной информации, просто введите следующие
ls --help
Это печатает все файлы, рекурсивно, из текущего каталога.
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
Команда ls
будет печатать только имя файла в каталоге. Почему бы не сделать что-то вроде
print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/" + i)
Откроется каталог с именем файла.
Существует более чем один способ сделать это, проще всего я бы подумал:
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`/{})
У меня была эта проблема, и я использую следующее:
ls -dl $PWD/* | grep $PWD
Он всегда получал мне список, который я хотел, но ваш пробег может отличаться.
Это сработало для меня:
ls -rt -d -1 $PWD/{*,.*}