Clamscan -ri Bash Получить имя файла

ubuntu 11.10

Скопируйте файл запуска «Home Folder» в ваш домашний каталог:

cp /usr/share/applications/nautilus-home.desktop ~/.local/share/applications

Откройте файл для редактирования в gedit:

gedit ~/.local/share/applications/nautilus-home.desktop

ниже:

[Desktop Entry]

Name=Home Folder
Comment=Open your personal folder
TryExec=nautilus
Exec=nautilus --no-desktop
Icon=user-home
Terminal=false
StartupNotify=true
Type=Application
Categories=GNOME;GTK;Core;
OnlyShowIn=GNOME;Unity;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=nautilus
X-GNOME-Bugzilla-Component=general
X-Ubuntu-Gettext-Domain=nautilus

X-Ayatana-Desktop-Shortcuts=Videos;Documents;Music;Pictures;Downloads
[Videos Shortcut Group]
Name=Videos
Exec=nautilus Videos
TargetEnvironment=Unity


[Documents Shortcut Group]
Name=Documents
Exec=nautilus Documents
TargetEnvironment=Unity

[Music Shortcut Group]
Name=Music
Exec=nautilus Music
TargetEnvironment=Unity

[Pictures Shortcut Group]
Name=Pictures
Exec=nautilus Pictures
TargetEnvironment=Unity

[Downloads Shortcut Group]
Name=Downloads
Exec=nautilus Downloads
TargetEnvironment=Unity

после того, как вы вышли из системы и обратно (или просто перезапустите единицу, набрав unity в терминале, вы будете иметь папки в качестве быстрого списка для значка домашней папки .

1
задан 10 September 2015 в 22:56

1 ответ

$ clamscan -ri | sed -n '/FOUND/s/: .*//p'
/home/folder/public_html/wp-content/uploads/2015/07/HB006_Hyalobarrier-Product-training-MASTER-10-07-15.ppt
/home/folder/public_html/wp-content/uploads/2015/02/Tech003_HA_HYAFF_technology_MASTER_presentation_RevB.ppt
/home/folder/public_html/wp-content/uploads/2015/02/HM006_Hyalomatrix_PA_product_overview_training_RevB.ppt
/home/folder/public_html/wp-content/uploads/2014/10/HG010_Hyaloglide_product_overview_training_RevC.ppt

Как это работает

Каждый файл отображается в двух строках ввода. Чтобы избежать дублирования, нам нужно выбрать только одну из этих строк. Этот код выбирает первое появление, которое со словом FOUND в конце строки. Затем он удаляет все после : и печатает строку.

Подробнее:

-n Это говорит sed не печатать ничего, если мы явно не просим его. /FOUND/ s/: .*//p Это выбирает строки, содержащие слово FOUND. Подстановка команды s/: .*// удаляет все после пробела. Суффикс p сообщает sed распечатать эти строки.

Создание вывода в массив bash

Чтобы создать массив bash из имен файлов:

IFS=$'\n' cl_scan=($(clamscan -ri | sed -n '/FOUND/s/: .*//p'))

Поскольку мы устанавливаем IFS=$'\n', это будет работайте даже для имен файлов, содержащих пробелы или вкладки. Это не будет работать для имен файлов, содержащих новые строки или пространство двоеточия.

Чтобы убедиться, что массив по желанию, запустите:

$ declare -p cl_scan
declare -a cl_scan='([0]="/home/folder/public html/wp content/uploads/2015/07/HB006 Hyalobarrier Product training MASTER 10 07 15.ppt" [1]="/home/folder/public html/wp content/uploads/2015/02/Tech003 HA HYAFF technology MASTER presentation RevB.ppt" [2]="/home/folder/public html/wp content/uploads/2015/02/HM006 Hyalomatrix PA product overview training RevB.ppt" [3]="/home/folder/public html/wp content/uploads/2014/10/HG010 Hyaloglide product overview training RevC.ppt")'
2
ответ дан 23 May 2018 в 17:34
  • 1
    поэтому cl_scan=$(clamscan -ri /home/*/public_html | sed -n '/FOUND/s/: .*//p'); будет массивом путей? Я только что ответил, и все выглядело так, будто это была одна строка, но пространство разделено – Kevin 10 September 2015 в 23:14
  • 2
    думаю, я понял, что это cl_arr=(${cl_scan// / });, похоже, делает трюк :) Примите помощь! – Kevin 10 September 2015 в 23:23
  • 3
    @Kevin Я добавил раздел к вопросу о массивах. – John1024 10 September 2015 в 23:24
  • 4
    aye, попробовал это, и получил cat: clam: no such file... попробовал это с clamscan также – Kevin 10 September 2015 в 23:26
  • 5
    @Kevin Ой. Typo исправлено. – John1024 11 September 2015 в 01:08

Другие вопросы по тегам:

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