{"id":1233,"date":"2022-10-16T18:37:10","date_gmt":"2022-10-16T16:37:10","guid":{"rendered":"https:\/\/alessandromasciadri.com\/?p=1233"},"modified":"2022-10-16T18:40:10","modified_gmt":"2022-10-16T16:40:10","slug":"come-iterare-per-ogni-cartella-con-bash","status":"publish","type":"post","link":"https:\/\/alessandromasciadri.com\/come-iterare-per-ogni-cartella-con-bash\/","title":{"rendered":"Come iterare per ogni cartella con Bash"},"content":{"rendered":"\t\t<div data-akihiro-type=\"ama-post\" data-akihiro-id=\"1233\" class=\"akihiro akihiro-1233\" data-akihiro-post-type=\"post\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-c774149 e-flex e-con-boxed e-con e-parent\" data-id=\"c774149\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5cf55fb akihiro-widget akihiro-widget-text-editor\" data-id=\"5cf55fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lo scenario \u00e8 tra i pi\u00f9 comuni nell&#8217;ambito dell&#8217;amministrazione di sistemi Linux based. Quando abbiamto bisogno di preparare uno script Bash che itera operazioni per ogni cartella presente in un dato percorso, possiamo seguire questa semplice guida.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-422fad0 akihiro-widget akihiro-widget-heading\" data-id=\"422fad0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Iterare operazioni per ogni cartella in Bash<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-31e6781 akihiro-widget akihiro-widget-text-editor\" data-id=\"31e6781\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\tIpotiziamo di avere una serie di file e cartelle contenute nel percorso <code>\/home\/my-folder\/<\/code> e di avere la necessita di ripetere una serie di istruzioni solo per tutte le cartelle (escludendo quindi i file) contenute nel percorso. Le porzioni di codice qui sotto vanno eseguite dal percorso <code>\/home\/my-folder<\/code>.\n\nIl nostro script Bash si presenter\u00e0 cos\u00ec\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-4a57ae3 akihiro-widget akihiro-widget-code-highlight\" data-id=\"4a57ae3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>for f in *\/ ; do\n    echo \"$f\"\ndone\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-8118bcc akihiro-widget akihiro-widget-text-editor\" data-id=\"8118bcc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>La presenza dello slash dopo l&#8217;asterisco sta ad indicare che verranno tenute in considerazione solo le cartelle.<\/p><p>Inoltre, nel caso in cui si volessero escludere anche i link simbolici dal computo, possiamo aggiungere una condizione che nel caso in cui sia verificata salta all&#8217;iterazione successiva.<\/p><p>Lo script Bash si presenter\u00e0 quindi cos\u00ec<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-627711f akihiro-widget akihiro-widget-code-highlight\" data-id=\"627711f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>for f in *\/ ; do\n    [ -L \"${f%\/}\" ] && continue\n    echo \"$f\"\ndone<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-4b4901f akihiro-widget akihiro-widget-text-editor\" data-id=\"4b4901f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Un&#8217;altra valida alternativa \u00e8 quella di testare se \u00e8 effettivamente una cartella.<\/p><p>In questo caso lo script Bash sar\u00e0 come il seguente<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5730046 akihiro-widget akihiro-widget-code-highlight\" data-id=\"5730046\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>for f in *; do\n    if [ -d \"$f\" ]; then\n        echo \"$f\" #$f \u00e8 una directory\n    fi\ndone<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Lo scenario \u00e8 tra i pi\u00f9 comuni nell&#8217;ambito dell&#8217;amministrazione di sistemi Linux based. Quando abbiamto bisogno di preparare uno script Bash che itera operazioni per ogni cartella presente in un dato percorso, possiamo seguire questa semplice guida. Iterare operazioni per ogni cartella in Bash Ipotiziamo di avere una serie di file e cartelle contenute nel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[42,20,19],"class_list":["post-1233","post","type-post","status-publish","format-standard","hentry","category-programmazione","tag-bash","tag-linux","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/comments?post=1233"}],"version-history":[{"count":8,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1233\/revisions"}],"predecessor-version":[{"id":1241,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/1233\/revisions\/1241"}],"wp:attachment":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/media?parent=1233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/categories?post=1233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/tags?post=1233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}