SITO1 -- SITO2 -- Forum1 -- CercaGlobale -- Informativa su Cookie e Privacy


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Salvare le annotazioni nelle proprietà dei file in un testo
#1
Il file manager di Ubuntu permette di scrivere delle note nelle proprietà dei file, come pure di aggiungere dei simboli che aiutano visivamente a distinguerli. 

Le note possono risultare utili da usare, c'è da sapere però che se ad un file si applica una annotazione, se si sposta o copia il file in un disco esterno o in un'altra partizione le note vengono perse.

Ad esempio ho messo delle annotazioni su alcuni ODS che faccio sincronizzare tramite Dropbox fra due Ubuntu Mate, ma le note non si salvavano. Ho fatto qualche ricerca e ho  trovato che succede  perché le annotazioni non fanno parte del file ma sono dei metadati che vengono conservati nella cartella nascosta ~ / .local / share / gvfs-metadata.


Le annotazioni si possono salvare  in un file di testo tramite dei comandi su terminale, prima che i file vengano spostati.

Aprire la cartella nel terminale e dare il comando


Codice:
gio info -a metadata::annotation [file] | sed s/' metadata::annotation: '/''/g > [output].txt


Al posto di [file]  mettere  l'elenco dei file o cartelle , si possono anche selezionare e trascinare, e al posto di [output] il nome  che vogliamo.

Il risultato sarà ad esempio:

uri: file:///home/mb3/Scrivania/resoconto.pdf
attributi:
farlo leggere anche a Ciccio
uri: file:///home/mb3/Scrivania/fattura.xlsm
attributi:
ricordarsi  di controllare  gli articoli
uri: file:///home/mb3/Scrivania/Compleanno.png
attributi:
farla stampare
uri: file:///home/mb3/Scrivania/Manuale_HL_HUB.pdf
attributi:
istruzioni del nuovo modem
...
e così via.


Invece, quando eseguito da terminale, lo script seguente ripreso  e modificato da qui, salva le note in documenti di testo separati, ognuno con il nome del file.
Così quando visualizziamo in ordine alfabetico, ogni nota è proprio vicino al suo file. Però non funziona sulle cartelle (non so perché).

Codice:
#!/bin/bash

process_dir() {
local -a subdirs=()
echo "Scanning directory: $1"

# Scan the directory, processing files and collecting subdirs
for file in "$1"/*; do
if [[ -f "$file" ]]; then
echo "Processing file: $file"
# actually deal with the file here...

#gio info -a metadata::annotation $file | grep annotation | sed s/' metadata::annotation: '/''/g > $file.note
note=$(gio info -a metadata::annotation "$file" | grep annotation | sed s/' metadata::annotation: '/''/g)
#len=`echo ${#note}`
#echo $len
if [ -z "$note" ]
then
echo "No note for file $file"
else
echo "Found a note for file \"$file\", saying: \"$note\""
echo "$note" > $file.ntext

fi     # $String is null.

elif [[ -d "$file" ]]; then
subdirs+=("$file")
# If you don't care about processing all files before subfolders, just do:
# process_dir "$file"
fi
done

# Now go through the subdirs
for d in "${subdirs[@]}"; do
process_dir "$d"
done
}

clear
if [[ -z "$1" ]]; then
read -p "Please enter a directory for me to scan " dir
else
dir="$1"
fi
process_dir "$dir"


l'unica modifica che ho fatto rispetto all'originale è di sostituire gvfs-info  (comando deprecato) con gio info -a metadata::annotation
Cita messaggio
Grazie da: Blackstar


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)