Her dosyanın yaratma tarihini, dosya adındaki bilgilerle eşleşecek şekilde değiştirmek için Toplu komut.


1

Birkaç yüz video dosyasına sahip bir klasörüm var. Tüm dosya adları bu biçimdedir:

2011-08-27 11.18.00

Ne yazık ki, her dosya için 'Oluşturulma Tarihi', dönüştürüldüğü tarih (2014'te bir tarih), başlangıçta alındığı tarih değil (dosya adında belirtilmiş).

Touch -t operatörünün tek bir dosyanın oluşturulma tarihini değiştirmek için kullanılabileceğini öğrendim .

görüntü tanımını buraya girin

Altta: Oluşturulduğu Tarihi (yukarıdaki komutla birlikte) başarıyla değiştirdiğim ve Oluşturulduğu Tarih'in hala hatalı olduğu dosya.

görüntü tanımını buraya girin

Herkes herhangi bir dosya adından YYYYMMDDhhmm bilgisini çıkaran ve toplu işlemde, bu dosyanın dokunma işlemi için kullanacak olan terminal koduna yardım edebilir mi?

Oluşturma tarihinin / saatinin doğru olmasını istiyorum, böylece kütüphaneme aktardığımda her dosya zaman çizelgesinde doğru yerde olacak.

Mac OS: El Capitan 10.11.5

Terminal Sürümü: 2.6.1

Hepinize teşekkürler.

Yanıtlar:


0
  • Terminali aç
  • tipi cd(boşluk bırakılarak yazılır dahil) ve klasörü sürükleyip içeren dosyalar (klasör muhtemelen Terminal penceresine yeniden adlandırılması Desktop/PRIMARYVIDEOS, bu nedenle komut gibi görünmelidir cd /Users/Andrew/Desktop/PRIMARYVIDEOS)
  • Enter tuşuna basın
  • türü (veya kopyala / yapıştır)

    for f in *; do t=$(echo $f | sed -E 's/[-. mov]//g'); echo touch -t $t "$f"; done
  • Enter tuşuna basın
  • if (ve sadece ise) bu touch, tamam gibi görünen bir komutlar listesiyle sonuçlanır , yazın (veya kopyala / yapıştır)

    for f in *; do t=$(echo $f | sed -E 's/[-. mov]//g'); touch -t $t "$f"; done
  • Enter tuşuna basın

@ andyp iyi görünüyor, bir deneyin :-)
nohillside

Merhaba @ patrix Bir yerlere geliyoruz! Her biri için böyle bir şeyle sonuçlanan bir test klasöründeki dört dosyadaki ilk kod parçanız sizsiniz: touch -t 20110107141300 2011-01-07 14.13.00.mov. Bununla birlikte, bundan sonra ikinci kod satırını çalıştırırken her biri için bu hatayı aldım: dokunma: aralık dışı ya da yasa dışı zaman belirtimi: [[CC] YY] MMDDhhmm [.SS] Dosya adları, ikinci dokunma başa çıkamıyorum. Kodun üst kısmı sanırım hataya yol açan saniyeler hakkındaki bilgiyi koparmadı
Andy P

: O @patrix yardım ederse her dosya adı saniye bilgileri (YYYY-AA-GG hh.mm.00.mov böylece her dosya adı her zaman şu şekilde görünecektir) her zaman 00 gibi, görünüşe
Andy P

Hi @patrix - Dosya adımdaki dört test dosyamın her biri için saniyelerdeki bilgileri çıkardım (örneğin, ilk kod şimdi geliyor: touch -t 201101071413 2011-01-07 14.13.mov) ve yukarıdaki kod mükemmel çalışıyor! Bunu düzeltmenin bir yolu var mı, böylece saniyeleri kaldırmak için her bir dosya adını değiştirmek zorunda kalmadan yüzlerce dosyamda çalıştırabilir miyim?
Andy P,

YAŞASIN! .00.mov 'un yerini hiçbir şey değiştirmeden bulucu toplu yeniden adlandırma işlevini kullanıyorum. Bu daha sonra yukarıdaki kodun birincil klasörümdeki birkaç yüz dosya için çalışmasına izin verdi. Siz @ patrix bir efsanesiniz. Teşekkür ederim.
Andy P,
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.