Это поведение по умолчанию ls
ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86/pool/v/vi/virtualenv-1.4.4_linux-x86_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86_64/pool/v/vi/virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/macosx/pool/v/vi/virtualenv-1.4.4_macosx_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/win32-x86/pool/v/vi/virtualenv-1.4.4_win32-x86_2.6_1.pypm
Как сделать ls
печать только базовым именем? Подобно:
ls $OPTIONS /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
virtualenv-1.4.4_linux-x86_2.6_1.pypm
virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
virtualenv-1.4.4_macosx_2.6_1.pypm
virtualenv-1.4.4_win32-x86_2.6_1.pypm
Примечание : я предпочитаю глобализацию оболочки вместо использования, find
поскольку / net / nas / data / languages / pypm / sites / rex / free содержит огромное количество файлов и каталогов.
linux
command-line
unix
ls
Срид говорит восстановить Монику
источник
источник
-maxdepth 1
кfind
.Ответы:
Хотя
xargs -0
он предназначен для использования для ввода, ограниченного \ 0 (подобноfind -print0
),ls
не имеет такой возможности для ограничения вывода таким образом.Тем не мение,
сделал бы трюк для преобразования новых строк в нули по пути. Это тогда позволяет xargs работать с именами, которые имеют пробелы.
РЕДАКТИРОВАТЬ: добавлено
-n 1
в xargsисточник
basename: extra operand
\ 033 [0m / net / nas / data / languages / pypm / sites / rex / free / 2.6 / macosx / pool / v / vi / virtualenv-1.4.4_macosx_2.6_1.pypm \ 033 [ 0m'`-n 1
вы предложили в другом месте, как вариантxargs
? (ответ отредактирован)-d
(разделитель), вы можете это сделатьls ... | xargs -d '\n' -n 1 basename
.Я использую это:
Это дает список как:
источник
ls -1
(и раскраска отключена), чтоls
подразумевает те, которые не записываются в терминал. Похоже, вы немного упускаете суть, поскольку проблема заключается в удалении имени dir swhen при указанииls
аргументов пути с использованием подстановочных знаков . Попытайтесьls -d "$PWD/"* | tr '\n' '\n'
увидеть, что является фактической проблемой.ls -1
, что и не работает, когда используются шарики, как указал Дэниел Бек.ls -1
, что и работает только в текущем каталоге, а не с таким путемls path/*
.источник
awk
решение:источник
ls [необязательный путь] | xargs -0 базовое имя
источник
xargs -0
и нужно.И базовое имя GNU, и базовое имя FreeBSD принимают
-a
аргумент, позволяющий передавать в команду несколько путей. Это прекрасно работает с globbing оболочки.источник
Вы сказали, что предпочитаете болтаться
find
, но знаете ли вы, что оба не являются взаимоисключающими? Глобирование происходит по любой команде, которую вы запускаете, а не толькоls
. Например:Обратите внимание, что в примере поиска может использоваться -print0, что удобно, если ваши пути содержат пробелы (
tr
решения, основанные на других, упомянутые в другом месте, прекрасно работают на обычных пробелах, но не на файлах, содержащих фактические символы новой строки).Наконец, если у вас есть доступ к GNU find, вы также можете использовать -printf, который полностью исключает вызов basename:
источник
-printf
опция недоступна в MacOSX версииfind
.перейдите в каталог, где у вас есть все ваши файлы и введите.
источник
find
.find . -name '*pypm'
если вообще ... просто поместив шарик рядом, чтобы найти ничего не достигает - тогда вы могли бы просто написатьls *.pypm
.)