मैं सामने शून्य गद्दी के बिना फ़ाइलों के अनुक्रम का नाम कैसे बदल सकता हूं ताकि उनके सामने शून्य गद्दी हो?


1

मेरे पास फाइलों का एक क्रम है:

file0.png, file1.png, ..., file10.png,... file100.png, ..., file1000.png, file1001.png, ..., file10000.png

मैं ffmpeg के साथ एक वीडियो बनाना चाहता हूं,

ffmpeg -framerate 30 -pattern_type glob -i '*.png' -c:v libx264 out.mp4

नाम सम्मेलन इनपुट में पढ़ी गई फ़ाइलों के गलत क्रम की ओर जाता है। इसे कैसे हल किया जा सकता है?

तथाकथित समाधान "मैं कमांड प्रॉम्प्ट में फ़ाइलों का एक समूह का नाम कैसे बदलूं?" काम नहीं करता है!


में कुछ विचार इस सवाल और जवाब धागा ढेर अतिप्रवाह पर । ध्यान दें कि मूल प्रश्न फ़ाइल एक्सटेंशन से संबंधित नहीं है, लेकिन कुछ उत्तर उसी तरह की स्थितियों को संबोधित करते हैं।
JakeGould

आपके ffmpeg कमांड लाइन के संदर्भ: & lt; BLOCKQUOTE & gt; -pattern_type glob -i '* .png' & lt; / BLOCKQUOTE & gt; यह जो भी आदेश चाहता है (संभवतः यादृच्छिक भी) का उपयोग करके ffmpeg हो सकता है। यह देखें कि क्या, इसके बजाय, आप कमांड लाइन पर प्रत्येक फ़ाइल को निर्दिष्ट कर सकते हैं, या यदि आप मानक इनपुट के माध्यम से भेजी गई फ़ाइलों की सूची निर्दिष्ट कर सकते हैं, या यदि आप एक टेक्स्ट फ़ाइल निर्दिष्ट कर सकते हैं जिसमें फ़ाइल नाम की सूची है। (@ का उपयोग बाद के दृष्टिकोण के लिए कई कार्यक्रमों द्वारा किया जाता है।) उन दृष्टिकोणों में से कोई भी अन्य टिप्पणियों में उल्लिखित संदर्भों का उपयोग करके समाधान का नेतृत्व करेगा। संभवतया सहायक: गूंज $ (x के लिए $ में (seq -w 1 10); गूंज फ़ाइल $ {x।;))
TOOGAM

वास्तव में, वह पूर्व उदाहरण लिनक्स में काम कर सकता है, न कि विंडोज या बीएसडी में। आपने "कमांड-लाइन" निर्दिष्ट किया, लेकिन यह निर्दिष्ट नहीं किया कि आप किस ओएस के बारे में पूछ रहे हैं। (मेरा मानना ​​है कि ffmmpeg बहु-प्लेटफ़ॉर्म है।) यदि आप आगे की मदद चाहते हैं, तो निर्दिष्ट करें कि आप जो ओएस का उपयोग कर रहे हैं (और आपके पास कौन से प्रश्न शेष हैं)।
TOOGAM

@TOOGAM linux का उपयोग करते हुए, मुझे लगा कि सुपरयुसर linux के लिए है
toto

यह करने के लिए बहुत आसान बनाता है। इसे इस्तेमाल करे: उचित छँटाई के लिए एक बार में सैकड़ों फ़ाइलों का नाम बदलना । मेरा सुझाव है कि आप स्वीकृत उत्तर से शुरुआत करें।
karel

जवाबों:


1

क्योंकि आर्चलिनक्स का नाम बदलने के उपयोग के साथ कुछ समस्या है, मैंने एक लाइव उबंटू पर बूट किया, और नाम बदला।

rename 's/\d+/sprintf("%05d", $&)/e' *.png  

यह वही है जो फ़ाइलों के अनुक्रम का नाम बदलने के लिए किया गया था।


0

शुरू में मैंने देखा ffmpeg यह देखने के लिए कि क्या इनपुट फ़ाइलनामों को अपनी स्वयं की फ़ाइल में निर्दिष्ट किया जा सकता है, जहाँ आप उन्हें अपनी इच्छानुसार छाँट सकते हैं। लेकिन प्रलेखन में स्पष्ट रूप से ऐसा विकल्प नहीं था। अगर आप ऐसा कोई विकल्प देखते हैं तो मैं गलत हो सकता हूं, और यह मेरी सिफारिश होगी।

इसलिए इसके बजाय आपको अपनी फ़ाइलों का नाम बदलने के लिए इनपुट करना चाहिए। मुझे लगता है कि आप बैश शेल का उपयोग कर रहे हैं, फाइलें एक ही निर्देशिका में हैं, सभी नाम file1.png सेवा मेरे file10000.png और आप उनका नाम रखना पसंद करेंगे file00001.png सेवा मेरे file10000.png

#!/bin/bash
for f in file*.png
do
  printf -v n "file%05d.png" "${f:4:-4}"
  mv "$f" "$n"
done

एक पंक्ति के रूप में:
for f in file*.png; do printf -v n "file%05d.png" "${f:4:-4}"; mv "$f" "$n"; done

या शायद बस:

#!/bin/bash
for (( i=0; i<10000; i++ ))
do
  printf -v n "%05d" $i
  mv "file$i.png" "file$n.png"
done

एक पंक्ति के रूप में:
for (( i=0; i<10000; i++ )); do printf -v n "%05d" $i; mv "file$i.png" "file$n.png"; done;

मुझे यकीन नहीं है कि जो तेज़ है, लेकिन मुझे संदेह है कि दूसरा होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.