Это является возможно самым легким с жемчугом (так как жемчуг похож на sed и awk, я надеюсь, что это приемлемо для Вас):
perl -p -e 's/\\\n//'
Gilles точно прав, ls
действительно плохой пример, потому что расширение шарика имени файла может быть сделано намного легче на командной строке, не имея необходимость использовать ls
вообще! Если Ваши так называемые "текстовые файлы" имеют расширения файла для идентификации их, Вы могли бы сделать что-то вроде этого:
editor-command *.txt
Ради демонстрации техники, позволяет, используют более сложный пример, который не мог быть, покончили просто соответствие имени файла и открытые файлы на основе содержания вместо просто имени файла. Позволяет говорят, что Вы хотели открыть все файлы, которые содержали строку "тип контента".
Принятие Вашего редактора будет принимать несколько имен файлов и открывать их внезапно в отдельных буферах или последовательно работать, это - путь через них, можно просто работать:
editor-command $(grep -i content-type)
Теперь назад к Вашему исходному вопросу, позволяет, говорят, что Вы не знаете, являются ли они текстовыми файлами или не на основе их имен. Необходимо было бы затем использовать другую программу для идентификации их, затем открыть их на основе тех данных. Программа file
скажет Вам, какой файл что-то, и Вы можете grep, которые перечисляют для просто текстовых файлов и затем открывают просто имена файлов соответствия как это:
editor-command $(file -ni * | grep 'text/plain' | cut -d: -f1)
Вывод цепочки команды в $()
конструкция будет использоваться в качестве аргументов в пользу редактора. Я иногда делаю это на двух этапах. Скажите, что я просматриваю некоторый набор файлов и вовлекаю себя список каждого XML-файла, содержащего строку "тип контента"
find -type f -iname '*xml' | xargs grep -Hi 'content-type' | cut -d: -f1
... и решите, что я хочу открыть их. Я затем использую последний ярлык истории команд и делаю это:
vim $(!!)
... открыть все результаты предыдущей команды в энергии, моем любимом редакторе.
Если Ваш редактор только примет один файл за один раз, и необходимо продолжать извергать редакторов, необходимо будет использовать вариант любого xargs
или for
цикл в ответе jmtd в зависимости от того, используете ли Вы на терминальном основанного редактора, которому нужен stdio.
Открыть все файлы назвало что-то .txt
(т.е. *.txt
) в текущем каталоге:
$EDITOR *.txt
где $EDITOR
Ваш любимый редактор, например. gedit *.txt
, nano *.txt
, vim *.txt
, emacs *.txt
или что бы то ни было. Используйте просто *
соответствовать всем файлам в текущем каталоге.
Обратите внимание что ls
команда не включена. Задание ls
не должен действительно отображать список файлов, хотя это происходит при вызове его на каталог. Где ls
полезно, находится в отображении атрибутов файла (время изменения, полномочия, размер и так далее). Чтобы просто сделать что-то на наборе файлов, соответствующих определенному подстановочному шаблону, шарики оболочки достаточно.
Усовершенствованный достаточно редакторов позволяет Вам сделать это изнутри. Например, в Emacs, просто используйте нормальную команду открытия файла (C-x C-f
) и войдите *.txt
.
Если Вы также хотите соответствовать файлам в подкаталогах в zsh или колотить ≥4, можно использовать $EDITOR **/*.txt
.
Это зависит от некоторых нюансов Вашего текстового редактора. Усовершенствованные редакторы могут, вероятно, обработать открытие нескольких файлов из командной строки в одном экземпляре. Но скажите, например, что Ваш редактор ($EDITOR в моих примерах ниже) может только открыться по одному. Необходимо передать вывод по каналу соответствующего find
в xargs
. Это также зависит от $EDITOR, не занимая TTY (так, с помощью графического)
find . -maxdepth 1 -type f -name '*.c' -print0 | xargs -r0n 1 $EDITOR
Если Вы хотите использовать консольного редактора, цикл оболочки мог бы быть более соответствующим, но если перестанет работать для многих редких имен файлов (путем сворачивания или замены пробельными символами и различными другими вещами):
for i in *.c; do $EDITOR "$i"; done
$EDITOR *.c
или for i in *.c; do $EDITOR "$i"; done
.
– Gilles 'SO- stop being evil'
04.05.2011, 23:23
for
случай перестанет работать для многих имен файлов, включая сворачивание/изменение пробельных символов.
– jmtd
09.05.2011, 16:52
for
случай будет работать с каждым именем файла (кроме возможно начала имен -
или +
с некоторыми редакторами; for i in ./*.c
зафиксировал бы это).
– Gilles 'SO- stop being evil'
09.05.2011, 18:59
editor-command *.css
, и т.д. – Gilles 'SO- stop being evil' 04.05.2011, 23:23sudo cpufreq-selector -g powersave
---------121$--------110371----() - то, что я на самом деле искал. я должен был упомянуть, что использую ls в качестве примера здесь. +1 к обоим ответам. – c0smikdebris 05.05.2011, 09:29