File "mv" con nome confuso per numero di inode?


6

Ho diversi file con problemi di codifica nei loro nomi di file (umlaut tedeschi, masterizzati su CD con Windows, letti da Windows e sincronizzati con Linux con Seafile. Qualcosa, da qualche parte è andato storto ...). Bash e zsh mostrano solo "?" invece di umlaut, statmostra qualcosa di simile

$ stat Ergnzung.doc 
File: Erg\344nzung.doc
Size: 2609152         Blocks: 5096       IO Block: 4096   regular file
Device: 806h/2054d      Inode: 12321475    Links: 1

Posso inserire il nome file solo con il completamento automatico. Come rinominare il file? I file interessati sembrano essere illeggibili da LibreOffice (o altri programmi per altri tipi di file), lamentano "Nessun file o dispositivo di questo tipo".

Ci stavo pensando mv --by-inode 12321475 Ergänzung.doc, ma non c'è --by-inodeinterruttore per mv. Cos'altro posso fare?


6
Umm ... hai già capito come farlo stat; fai lo stesso con mv.
psusi,

1
Ero sicuro di aver provato questo e di aver avuto qualche errore. Ora sembra funzionare. Ma la via find -inumè più affidabile / più semplice se ci sono più file con lo stesso prefisso.
Jasper,



Hai detto che puoi inserire il nome file con il completamento automatico. Allora perché no mv Erg<tab> Ergnzung.doc?
immibis,

Risposte:


12

Puoi provare:

find . -inum 12321475 -exec mv {} new-filename \;

o

find . -inum 12321475 -print0 | xargs -0 mv -t new-filename

In genere preferisco xargs a exec. Google per il perché. È difficile però. Vedi Trova -exec + vs trova | xargs. Quale scegliere?


Ho provato, e ha funzionato (con l' -execopzione, non ho provato il xargscomando)
Jasper,

2
Con xargs -0, non hai bisogno find  … -print0?
G-Man,

probabilmente. come quello ^? oppure modifica per correggere la sintassi
Michael Durrant,

3

Esiste un'utilità convmvper questo tipo di problema. Ti permette di cambiare la codifica di un nome file da es. Windows cp1256a utf8, ecc.


1

Solo per la cronaca, l' xargs -0uso corretto è:

find . -inum 12321475 -print0 | xargs -0 -I '{}' mv '{}' new-filename

ma come già sottolineato non era necessario comunque.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.