2016-12-04 2 views
0

Я новичок в UNIX. Я пытаюсь создать сценарий bash, который перечисляет «голову» каждого файла в указанном каталоге, но ive попробовал все, и он, похоже, не работает. Как я это сделаю. Ниже приведен код, который у меня есть в моем скрипте. Я намерен добавить в скрипт позже, но сначала это нужно для работы.Как получить «голову» всех файлов в указанном каталоге?

numberOfLines=$1 
directoryName=$2 

head $numberOfLines $directoryName 

ответ

0

Попробуйте это:

head $directoryName/* -n $numberOfLines 
0

Вы вызываете команду голову в неправильном направлении. Сравните ваш код с manual page.

0

Я хотел бы использовать find команды:

find "$directory" -maxdepth 1 -type f -exec head -n "$numberOfLines" {} \; 

Это гарантирует, что head будет выполняться только на файлы, а не каталоги.

0

Глава работает с файлом (или группой файлов), а не с каталогом, поэтому вам нужно настроить переменную directoryName, чтобы вы говорили интерпретатору оболочки, что вы имеете в виду «каждый файл в этом каталоге», а не каталог ,

Проще всего было бы добавить «/ *» в DirectoryName, изменив третью строчку в этом:

head $numberOfLines ${directoryName}/* 

Пример:

myshell:tmp gdalton$ ./script.sh -2 hello 
==> hello/file1 <== 
file 1 

==> hello/file2 <== 
file 2 
file 2 

Обратите внимание, что вам нужно будет ссылаться на ваш первый параметр с тире, как я сделал в примере из-за синтаксиса для команды head. Вы можете легко исправить это в своем коде, используя изменение, которое я сделал, чтобы исправить ваш код как точку перехода ... Я бы настоятельно советовал вам проверять страницы руководства для головы, чтобы вы могли понять, как структурировать ваши команды оболочки; они часто содержат множество опций для этих команд.

man head 

Удачи.