Как сохранить статистику всех файлов, найденных в поиске?

Наиболее вероятно различие в переменных среды и текущей рабочей папке. Служба запускает скрипт из / и с чистой средой. Таким образом, может потребоваться проверить среду и текущий рабочий каталог (с помощью команд export , pwd или set ) и добавить отсутствующие предварительные условия в сценарий.

-121--217608-

Вы близки.

Во-первых, переменная M4 должна быть набором к пути к фактическому файлу программы M4, а не к каталогу, в котором она находится. Возможно, для этой переменной чаще, чем в вашем случае, используется выбор нескольких M4 программ, которые уже находятся в PATH , поэтому необходимо назвать фактический исполняемый файл. Обычно в OSes типа BSD используется платформа m4 , а затем программа GNU M4, называемая, например, gm4 . При построении GNU Bison может потребоваться использовать GNU-версию M4, и эта переменная позволяет это сделать. В противном случае сценарий сначала найдет версию BSD в нашей примерной системе.

Во-вторых, я думаю, что ваше изменение PATH игнорируется. Если не экспортировать PATH , новое значение будет доступно только оболочке. Это можно исправить двумя способами:

 export PATH=$HOME/local/flex/bin/:$PATH

или

 PATH=$HOME/local/flex/bin/:$PATH ../configure --flags-and-stuff-here

Вторая версия вносит изменения только для сценария configure . Любые программы, запускающие скрипты, не увидят измененный PATH , если он не экспортирует новое значение.

Лично я бы сделал это первым способом в одном из ваших сценариев запуска (например, ~/.bash _ profile ), потому что вы хотите, чтобы ваша личная версия Flex была доступна вам после установки Bison. Регистрация, затем вернитесь и попробуйте запустить flex для тестирования. Если это работает, скрипт Bison configure также должен сначала найти эту версию.

-121--90883-

Эта проблема на самом деле может быть проще всего сделать с ed , поскольку это в основном скриптовый текстовый редактор, а не потоковый процессор. Используя ed , вы не должны сохранять все строки файла в массив, например, так как он уже делает это для вас.

# Create test file
~> printf "%s\n" aaaaaa bbbbbb cccccc dddddd eeeeee >test.txt
~> cat test.txt
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee

# Use ed to open the file, move the last line after the first, save, and quit
~> printf "%s\n" '$m1' wq | ed test.txt
35
35
~> cat test.txt
aaaaaa
eeeeee
bbbbbb
cccccc
dddddd
0
10.12.2014, 13:01
2 ответа

Вы можете использовать все за один раз. Также используйте + вместо этого, что будет быстрее, так как выполнит все действие сразу.

find /tmp -type f -iname 'magick-*'-exec stat {} + -exec sh -c 'rm -rf  $@' _ {} + | tee -a log_to_file
0
28.01.2020, 02:51

Вы не показываете, что происходит , когда вы пробуете его. Просто говоря: «Это не работает», никогда не правильно.

Я подозреваю, что ваши проблемы Mey будут связаны с одним или несколькими из следующих действий:

  • процитируют шаблон или избежать * . Если вы этого не сделаете, и у вас есть один или несколько файлов в текущем каталоге, который соответствует этому шаблону, шаблон будет расширен в список сопоставленных файлов и заменяет в вашу команду, что это не хочу.
  • Не используйте / TMP / * для поиска, просто используйте / TMP , находятся , идеально способны речь идут в данный каталог сам по себе; Затем он также найдет какие-либо файлы, имя которых начинается с точки.

Кроме того, если бы работал RM , то статус также должен работать .

Обратите внимание также, что вы можете объединить два:

find /tmp -type f -iname 'magick-*' -exec stat {} \; -exec rm {} \;

сначала Stat , то, если статус не потерпел неудачу, RM выполняется.

Вы можете сохранить вывод, просто перенаправляя Найти вывод на любой файл, который вы хотите.

1
28.01.2020, 02:51

Теги

Похожие вопросы