Я предполагаю, что Вы используете удар или подобные. Пример:
all=false
long=false
while getopts ":hal" option; do
case $option in
h) echo "usage: $0 [-h] [-a] [-l] file ..."; exit ;;
a) all=true ;;
l) long=true ;;
?) echo "error: option -$OPTARG is not implemented"; exit ;;
esac
done
# remove the options from the positional parameters
shift $(( OPTIND - 1 ))
ls_opts=()
$all && ls_opts+=( -a )
$long && ls_opts+=( -l )
# now, do it
ls "${ls_opts[@]}" "$@"
Я думаю, что Ваш лучший выбор find
команда. Если Вы хотите просто файлы а не каталоги в Вашем списке, чем-то вроде этого:
find directory/ -type f -print > textfile
Команда находки рекурсивно перечислит файлы. (Если Вы хотите каталоги, перечисленные также, удаляете -type f
). > textfile
перенаправления stdout в файл назвали текстовый файл без потребности в кошке.
find
мощный инструмент со многими опциями. Посмотрите man find
если Вы находите, что необходимо настроить вывод немного.
ОБНОВЛЕНИЕ (благодарит gvkv):
Если Вы хотите поместить содержание файлов в единственный текстовый файл, то один способ сделать это:
find Documents/ -type f -exec cat {} + > textfile
find
универсальный путь, как ответ D Steven объясняет. Если Ваша оболочка поддерживает его, **
может использоваться для соответствия любому количеству подкаталогов (на ударе, которым оно совпадает с *
и только соответствия один по умолчанию, но видят комментарий Dennis), таким образом, можно просто сделать:
cat **/*
-printf '%f\n'
вместо-print
. – Adam Byrtek 21.09.2010, 01:53+
вместо\;
должно быть примерно то же как использующий xargs. – Steven D 25.09.2010, 05:09