Come posso verificare se il file è binario o di testo senza aprire il file?linux + verifica se il file è testo o binario
risposta
Non c'è modo di essere certi senza guardare all'interno del file. Ma non è necessario aprirlo con un editor e vedere di persona avere un indizio. Si consiglia di esaminare il comando : http://linux.die.net/man/1/file
Il gatto di Schrödinger, ho paura.
Non esiste alcun modo per determinare il contenuto di un file senza aprirlo. Il filesystem non memorizza alcun metadata relativo ai contenuti.
Se non aprire il file non è un requisito irrinunciabile, sono disponibili numerose soluzioni.
Edit:
È stato suggerito in un certo numero di commenti e risposte che file(1)
è un buon modo di determinare il contenuto. Certo che lo è. Tuttavia, file(1)
apre il file, che era vietato nella domanda. Vedere la penultima riga nel seguente esempio:
> echo 'This is not a pipe' > file.jpg && strace file file.jpg 2>&1 | grep file.jpg
execve("/usr/bin/file", ["file", "file.jpg"], [/* 56 vars */]) = 0
lstat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
stat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
open("file.jpg", O_RDONLY|O_LARGEFILE) = 3
write(1, "file.jpg: ASCII text\n", 21file.jpg: ASCII text
Se si sta tentando di fare questo da una shell di comando il comando file
avrà una congettura a quello tipo di file che è. Se è testo, generalmente includerà la parola testo nella sua descrizione.
Non sono a conoscenza di alcun metodo al 100% per determinare ciò ma il comando file è probabilmente il più accurato.
Ovviamente questo apre il file e non sarà sicuro al 100%. –
In effetti lo fa, anche se non ero sicuro se fosse contrario ad aprire il file da solo o avere un'utilità che lo aprisse. Ho affermato che non esiste un metodo sicuro al 100% per farlo. –
In unix, un file è solo alcuni byte. Quindi, senza aprire il file, non puoi capire al 100% che sia ASCII o Binario.
Puoi semplicemente utilizzare gli strumenti disponibili e scavare più a fondo per renderlo infallibile.
- file di
- cat -v
Il modo corretto per determinare il tipo di un file è quello di utilizzare il (1) comando file.
È inoltre necessario tenere presente che i file con codifica UTF-8 sono file "di testo", ma possono contenere dati non ASCII. Anche altre codifiche hanno questo problema. Nel caso di testo codificato con uno code page, potrebbe non essere possibile determinare in modo univoco se un file è testo o meno.
Il file (1) comando guardare la struttura di un file per cercare di determinare ciò che contiene - dal file (1) pagina man:
Il tipo stampata di solito contengono uno dei le parole testo (il file contiene caratteri di stampa solo e pochi caratteri di controllo comune ed è probabilmente sicuro di leggere su un ASCII terminale), eseguibile (il file contiene il risultato della compilazione di un programma in una forma comprensibile a alcuni kernel UNIX o nell'altro), o dati significa niente altro (i dati sono di solito ‘binario’ o non stampabile).
Per quanto riguarda le diverse codifiche dei caratteri, il file (1) l'uomo ha questo da dire:
Se un file non corrisponde a nessuno dei voci nel file magia, è esaminato per vedere se sembra essere un file di testo. ASCII, ISO-8859-x, non- Set di caratteri ASCII estesi a 8 bit (come quelli usati su Macintosh e sistemi PC IBM), Unicode con codifica UTF-8, codificato UTF-16 Unicode, e I set di caratteri EBCDIC possono essere distinti dai diversi intervalli e sequenze di byte che costituiscono testo stampabile in ciascun set. Se un file supera uno di questi test, viene riportato il suo set di caratteri. ASCII, I file ISO-8859-x, UTF-8 e ASCII esteso sono identificati come 'testo' perché saranno quasi leggibili su quasi tutti i terminali; UTF-16 e EBCDIC sono solo 'dati carattere' perché, mentre contengono testo, è il testo che richiede la traduzione prima che possa essere letto.
Quindi, una parte di testo sarà identificato come testo, ma alcuni possono essere identificato come dati di caratteri. Dovrai determinarti se questo è importante per la tua applicazione e prendere le misure appropriate.
- 1. verifica se un file binario è stato compilato con "-static"
- 2. Come verificare se il file è binario?
- 3. Ruby: come determinare se il file da leggere è binario o testo
- 4. Node.js verifica se il percorso è file o directory
- 5. Controlla se un file è binario o ASCII con Node.js?
- 6. Verifica se il file Localizable.strings è valido
- 7. Verifica se il file è completamente scritto
- 8. Verifica se il file è un file multimediale in C#
- 9. Java, Runtime.exec o ProcessBuilder: come sapere se il file è shell o binario?
- 10. Verifica se l'array è vuoto o nullo
- 11. Verifica se stdin è vuoto
- 12. Verifica se il file di risorse esiste
- 13. Verifica UWP se il file esiste
- 14. Come verificare se il file è ASCII o binario in PHP
- 15. Verifica se il certificato è certificato jolly
- 16. Linux - Trova se il processo è pronto o in esecuzione
- 17. Jquery verifica se il valore è numerico
- 18. Verifica se il cookie è impostato
- 19. Verifica se il sito web è contattabile
- 20. Verifica se il dispositivo è iPad
- 21. Verifica se il modulo AngularJS è bootstrap
- 22. Selenio: verifica se l'elemento contiene del testo
- 23. Verifica se javascript è abilitato
- 24. Verifica se esiste una inclusione (o richiesta)
- 25. Perché git decide che il mio file è binario
- 26. Dov'è il binario linux generico openjdk7.tar.gz?
- 27. Verifica se l'app è costruita a 32 o 64 bit?
- 28. Verifica se un collegamento è interno o esterno
- 29. Verifica se l'immagine è caricata dalla cache o no
- 30. Verifica se l'elemento è stato premuto o modificato
È difficile dire se questo è legato alla programmazione o se deve essere migrato su SuperUser.com (è richiesta un'utilità esistente?). – Johnsyweb
Il testo è al massimo un sottoinsieme di binari, se non semplicemente un'interpretazione. Considera un file di un byte contenente '0x65'. Ora dimmi assolutamente se questo è binario o di testo. – MSalters
per quanto riguarda la copia del file prima di verificare. copia -> apri -> verifica -> cancella –