Come faccio a modificare a livello di programmazione l'impostazione "Nascondi estensione" per un elenco di file?

1

Per qualche ragione, quando eseguo un'operazione bash su un elenco di file (ad esempio ls | cat -n | while read n f; do mv "$f" 'printf "name-%02d.png" $n'; done , l'impostazione "Nascondi estensione" diventa attivata su tutti e devo deselezionare manualmente tramite "Ottieni informazioni". Come posso evitarlo o correggerlo a livello di programmazione?

EDIT: I file su cui stavo operando erano screenshot nativi e quindi avevano già le loro estensioni nascoste. Il mio male!

    
posta T3db0t 31.10.2017 - 20:52
fonte

1 risposta

3

Hmmm, sembra davvero strano. Ho appena eseguito il codice di esempio su alcuni file di test e non ha alterato affatto il flag Nascondi l'estensione . Sei sicuro che i file non abbiano già questa opzione selezionata prima di eseguire il comando? Hai provato a creare alcuni file nuovi, verificando manualmente che nessuno abbia selezionata quell'opzione e poi eseguendo il tuo comando su di essi?

Non posso aiutarti in termini di "come evitare questa parte" della tua domanda, poiché non riesco a ricreare il tuo problema da parte mia. Ma puoi disabilitare questa impostazione a livello di programmazione. Se hai installato Xcode, puoi fare quanto segue:

# Disables "Hide extension" for all visible files in current directory
for file in *; do
    SetFile -a e "$file"
done

Ricorda che se vuoi invertire il processo (ad esempio, attiva l'impostazione), puoi farlo cambiando il% in minuscolo% co_de in un% maiuscolo in% co_de.

# Enables "Hide extension" for all visible files in current directory
for file in *; do
    SetFile -a E "$file"
done

Se non hai installato Xcode, vedi questo risposta su superutente per istruzioni su come fare la stessa cosa usando AppleScript.

A proposito, dovresti cercare di evitare di analizzare l'output di e come hai fatto nel tuo esempio. Può causare problemi se uno qualsiasi dei file che stai elaborando contiene un carattere di nuova riga nel nome del file. Questo è particolarmente importante se scrivi uno script che elaborerà file che non hai creato tu stesso (dato che non saprai come vengono denominati). Vedi Perché non dovresti analizzare l'output di ls (1) per i dettagli.

    
risposta data 31.10.2017 - 23:10
fonte

Leggi altre domande sui tag