Come pulire i file ._AppleDouble dai pacchetti unix?

4

Introduzione

Ecco il mio problema. A volte, creo il pacchetto odd con dpkg-deb ( e.g., dpkg-deb --build "folder" file.deb ). Il problema è che qualsiasi file con un attributo esteso, porta con sé un file ._AppleDouble al pacchetto. Quindi quando l'utente installa il bit del software, il suo sistema è pieno di file ._AppleDouble.

Ad esempio,

-rw-r--r--@  1 cksum  staff      18305  9 Sep 22:42 ScreenShot.png

porterebbe con sé un file ._ScreenShot.png.

Metodo attuale di coping

Attualmente, sto usando il comando xattr incredibilmente agonizzante per elencare l'attributo esteso e quindi eliminarli. Ad esempio, quanto sopra riporterebbe quanto segue, come mostrato da xattr ,

com.apple.FinderInfo
com.apple.metadata:kMDItemIsScreenCapture
com.apple.metadata:kMDItemScreenCaptureType

In questo caso, dovrei spogliare le risorse una alla volta, usando ancora xattr ,

xattr -d com.apple.FinderInfo ScreenShot.png
xattr -d com.apple.metadata:kMDItemIsScreenCapture ScreenShot.png
xattr -d com.apple.metadata:kMDItemScreenCaptureType ScreenShot.png

Questo è piuttosto difficile quando a volte hai dozzine di file ed è diventato troppo difficile.

Sono a conoscenza dell'utilità BlueHarvest , ma non sono entusiasta di pagare per qualcosa che non userò tanto. Inoltre, ho provato il software e ho notato che purtroppo a volte non riesce a rimuoverli tutti. Infine, è più adatto per la gestione dei dischi utilizzati da diversi sistemi operativi rispetto a quelli per le cartelle locali.

Soluzione ideale

Una soluzione ideale sarebbe continuare a utilizzare xattr (poiché è il più affidabile), ma automatizzando il processo. È importante rimuovere i file ._AppleDouble prima li impacchetta. Questa, tuttavia, non è la soluzione solo e sono certamente aperto a tutti i tipi di idee. Ma spero di riuscire a raggiungere il mio obiettivo senza la necessità di installare programmi aggiuntivi o di fare affidamento sui daemon.

    
posta 22.09.2011 - 00:50
fonte

2 risposte

8

Ho bisogno di imparare l'uso xattr corretto.

Apparentemente, xattr ha un comando "clear" (-c) che può essere applicato usando un carattere jolly (*), come segue,

xattr -cr *

Ciò comporta una rimozione ricorsiva di tutti i file ._AppleDouble dalla cartella corrente in giù (il flag -r esegue la ricorsione, mentre il flag -c li cancella), rendendo così il processo un banale comando di una riga.

Ciò tuttavia non cancella i file .DS_Store. Per questo, puoi utilizzare il buon vecchio comando "trova":

find . -type f -name .DS_Store -delete

Questo troverà ed eliminerà tutti i file .DS_Store dalla directory corrente in giù (in modo ricorsivo).

Infine, possiamo riunire tutto sotto forma di un alias chiamato semplicemente digitando "xat" (inserisci quanto segue nel tuo .bash_profile):

alias xat='find . -type f -name .DS_Store -delete && xattr -cr *'

Ora esegui "xat" su qualsiasi directory e rimuoverà quelle fastidiose forchette delle risorse e rimuoverà quei fastidiosi file .DS_Store da qualsiasi cosa al suo interno.

    
risposta data 22.09.2011 - 01:50
fonte
3

Ci sono molti modi in cui puoi farlo; Ecco un paio che ho usato:

dot_clean /path/folder

unisce i file punti-sottolinea con i file principali.

link

Se vuoi scegliere come target i file .AppleDouble puoi usare:

find / -name ".AppleDouble" -depth -exec rm -Rf {} \;

che li troverà e li cancellerà.

Ci sono modi in cui puoi anche configurare il processo in anticipo per le condivisioni SMB, ecc. durante la creazione di dpkgs. Questo potrebbe essere o meno applicabile a te, quindi volevo solo menzionarlo anche.

link

    
risposta data 22.09.2011 - 01:58
fonte

Leggi altre domande sui tag