Samba bağında garip adla dosyayı yeniden adlandırın


10

Garip bir adla dosyayı makul bir şeye yeniden adlandırmak istiyorum, ancak yapamıyorum: /

$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

İnternette birkaç yerde tavsiye olarak inode numarasını kullanarak denedim:

$ ls -il *000c.jpg
ls: '?j?Z?R?C1_000c.jpg': No such file or directory
213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21  2012 '?j?Z?R?C1_000c.jpg'
$ find . -inum 213915 -print0 | xargs -0 -I '{}' mv '{}' 000c.jpg
mv: cannot move './?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

Ne yapmalıyım?


1
lsBu dizinde bir basit çıktı nedir ? Dosya normal bir dosya olarak gösteriliyor mu? Ben No such file or directorybir globbing hatası ve hasarlı bir dosya sisteminin göstergesi değil emin olmak istiyorum .
terdon

1
Dosya sistemi ihtiyacı yoluyla çalıştırılmak üzere acaba fsck? Bozuk olabilirim. Dosya bu ismi nasıl aldı?
Kusalananda

1
@Mioriin Dosya adındaki soru işaretleri, görüntülenemeyen karakterler için yer tutuculardır (veya iyi olabilir). (çıktısını ayrıştırmamak için bir sebep ls)
Kusalananda

1
Bu bir terminal yazı tipi sorunu olabilir. Gösteremediği ?harfleri gösteriyor . Tamamen unicode yazı tipine geçmeyi deneyin.
Mio Rin

5
@Mioriin Dosya adının görüntülenip görüntülenemeyeceği bu durumda biraz kırmızı bir ringa balığı olduğunu düşünüyorum. Garip olan şey, kabuğun genişleyebilmesidir, *_000c.jpgancak bu mvdaha sonra dosyayı işleyemez. IMHO, bozuk bir dosya sisteminin göstergesi. ... veya büyük olasılıkla, (dizin girişleri hala önbelleğe alınmış durumda olan) ağ paylaşımına bağlanan bir dosya sistemi veya başka bir şey.
Kusalananda

Yanıtlar:


16

İlgili yorumların özeti:

Unix dosya sistemleri, dosya adındaki \0(nul) ve /(eğik çizgi) dışındaki tüm karakterlere izin verir . lsSoru işaretlerini gösteren gerçek , yalnızca geçerli yerel ayarda dosya adının bazı karakterlerini görüntüleyememesidir (bu, çıktısını ayrıştırmaktan kaçınmanızınls nedenlerinden biridir ).

Bununla birlikte, bir Samba paylaşımıyla, görünüşe göre dosya adlarında standart bir Unix dosya sisteminden daha katı gereksinimlere sahipsiniz.

Dosya, ara Samba paylaşımınızda "geçersiz" bir ada sahip olduğundan, dosya paylaşımı paylaşan makinede doğru adıyla erişilemedi.

mvGlobbing desen genişletilmesi için Samba payı döndü adı barındırma dosya sistemi, adının yalnızca Samba'nın kendi parçalanmış sürümüne dosyasının asıl adı değildi çünkü işe yaramadı.

Çözümünüz, dosyayı gerçekten barındıran sunucuya (Samba'dan daha az kısıtlayıcı adlandırma kurallarına sahip bir dosya sisteminde) giriş yapmak ve oradaki dosyanın adını değiştirmekti. Bu doğru hareket şeklidir.

Bu soru için ayrıca Unix ve Linux sohbetine de bakın .


-2

Unix kabuklarında alıntı yapmayı öğrenmeden önce, diredeşleşmesi zor dosyaları yeniden adlandırmak veya silmek için emacs modunu kullanırdım. Dizini emacs'de açmanız yeterlidir:

emacs -q .

... sonra değiştirmek istediğiniz dosyaya gitmek ve dosyayı yeniden adlandırmak için ok tuşlarını kullanabilirsiniz R. ?size mevcut komutların listesini verecektir (eşleşmesi zor olan dosyaları da silebilirsiniz).

Sonra C-x C-cemacs sadece çıkış yolu ve bitti.


-3

Genellikle alışılmadık dosya adları ile dosya adının ve Linux'un düzgün bir şekilde tanıması için "./" ekleyebilirsiniz. Örneğin: $ ls ./?j?Z?R?C1_000c.jpg

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.