एक चरित्र की जगह कई फ़ाइल नाम बदलें


29

मेरे पास that : screenshot 13:25.png
इन फ़ाइलों को खोलने के लिए विंडोज़ संघर्ष की तरह कई फाइलें हैं जिनका नाम शायद ":" है।

मैं इसे कैसे बदल सकता हूं?


2
क्या आप हल किए गए प्रश्न को चिह्नित करने के लिए उत्तर स्वीकार कर सकते हैं? यह अन्य उपयोगकर्ताओं को बहुत मदद करेगा।
MERose

जवाबों:


52

एक टर्मिनल cdमें, सही निर्देशिका में और फिर इसे चलाएं।

rename 's/\:/-/g' *.png -vn

यह नाम बदलने का पूर्वावलोकन करेगा । इसके :साथ प्रतिस्थापित करना चाहिए -

अगर यह सही लगता है, nतो अंत से हटा दें और फिर यह वास्तविक नामकरण करेगा।

नोट : 17.04 से ऊपर के उबंटू संस्करण के साथ जहाज नहीं है rename, लेकिन यह अभी भी डिफ़ॉल्ट रिपॉजिटरी में उपलब्ध है, इसलिए sudo apt install renameइसे प्राप्त करने के लिए उपयोग करें


आपके उत्तर के लिए धन्यवाद। मैंने कोशिश की और मुझे यह समस्या है: प्रतिस्थापन पैटर्न (1) (1) लाइन 1 पर समाप्त नहीं हुआ
user236152

@ user236152 क्षमा करें, मैं बचने वाले बैकस्लैश (ऑटोपायलट पर था) के साथ थोड़ा पागल हो गया। एक जोड़े को हटा दिया और यह अब वैध होना चाहिए।
ओली

शायद एक साधारण Nautilus स्क्रिप्ट जो ऐसे सभी पात्रों को बदल देती है जो अन्य प्लेटफार्मों में समस्याओं का कारण बन सकते हैं (सभी चयनित फ़ाइलों पर चल रहे हैं) "मल्टीप्लायर" लोगों के लिए उपयोगी हो सकते हैं।
सादी

2
इसका उपयोग क्यों करें? यह आपको दिखाता है कि यह क्या कर रहा है (यदि आप गलती करते हैं तो रिवर्स करना आसान हो जाता है)। आखिर क्यों? बस इसलिए आप इसे (या n) आसानी से निकाल सकते हैं।
ओली

1
: @nightcrawler आप श्रृंखला पूरी तरह से अलग प्रतिस्थापन में सक्षम होना चाहिएrename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
ओली

10

यहाँ एक शुद्ध बैश समाधान है:

for i in *:*; do
    mv "$i" "${i//:/_}"
done

${var//pattern/replacement}प्रारूप की सभी घटनाओं का स्थान ले लेगा patternसाथ replacementचर में $var। बैश की स्ट्रिंग मैपुलेशन क्षमताओं के बारे में अधिक जानकारी के लिए, यहां देखें ।

यदि आप कई वर्णों के लिए ऐसा करना चाहते हैं, तो आप उन्हें केवल वर्ण वर्ग में रख सकते हैं। तो, उदाहरण के लिए, के सभी को बदलने के लिए ;, :, =, +, %, ,अंडरस्कोर से, आप कर सकता है:

$ ls 
1foo:bar  2foo:bar:baz  3foo;bar  4foo=bar  5foo%bar  6foo,bar  7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar  2foo_bar_baz  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar

मूल रूप से, विचार यह है कि [ ]इसका मतलब है any of the characters listed। इसलिए, आप उन सभी पात्रों को रखकर, जिन्हें आप वर्ण वर्ग में बदलना चाहते हैं, उन सभी को एक ही बार में निपटा दिया जाता है।


आपके द्वारा पूछे गए विशिष्ट वर्णों के लिए, चीजें थोड़ी अधिक जटिल हैं, क्योंकि उनमें से कुछ को भागने की आवश्यकता है (मैं इसे अनदेखा कर रहा हूं /क्योंकि * nix इसे फ़ाइल नामों में अनुमति नहीं देता है विंडोज से अधिक ऐसा कोई भी नहीं होगा मुद्दा):

$ ls
1foo<bar  2foo>bar  3foo:bar  4foo\bar  5foo|bar  6foo*bar  7foo?bar  8foo"bar  9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar  2foo_bar  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar  8foo_bar  9foo_bar

ध्यान दें कि मैं बच गया \, 'और प्रत्येक के सामने "एक जोड़कर \


क्या इसे कई व्यक्तिगत पात्रों (जैसे कि विंडोज द्वारा स्वीकार्य नहीं हैं) को दूसरों के साथ बदलने के लिए बढ़ाया जा सकता है?
सादी

1
@ सादी अपडेटेड उत्तर देखें।
टेराडॉन

मूल रूप से नौ हैं: "<>:" / \ | ? *
साडी

@ सादी अपडेटेड उत्तर देखें।
टेराडॉन

धन्यवाद, यह एक Nautilus स्क्रिप्ट बनाने में मदद कर सकता है जो चयनित फ़ाइल (नों) को विंडोज के साथ संगत बनाता है।
सादी

2

यदि आप एक GUI पसंद करते हैं, तो pyrenamer स्थापित करें:

sudo apt-get install pyrenamer

फिर इसे चलाएं:

pyrenamer

इसमें पैटर्न और नाम बदलने के प्रारूपों के दर्जनों विकल्प हैं।


1

मुझे GUI पसंद है लेकिन एक Nautilus एक्सटेंशन के रूप में, अर्थात Nautilus क्रियाएँ अतिरिक्त :

sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q

( Www.webupd8.org/2011/12/nautilus-actions-extra-pack-of-useful.html देखें )

फिर जब आप नाम बदलने के लिए फ़ाइलों का चयन करते हैं और संदर्भ मेनू से नाम बदलें पर क्लिक करते हैं, तो आपको फ़ाइलों का नाम बदलने के लिए कई विकल्प पेश किए जाते हैं।


0

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

इस स्थिति में, आप qmv -f do *:*कॉलन वाली सभी फाइलों के नाम संपादित करने के लिए उपयोग कर सकते हैं , और फिर :%s/:/_/gVim में कमांड (या आपके द्वारा उपयोग किए जाने वाले संपादक में संबंधित खोज-और-प्रतिस्थापित करें)।

-f doविकल्प सेट पाठ फ़ाइल का स्वरूप गंतव्य फ़ाइल-नाम ही है, जो खोज एवं प्रतिस्थापन बनाता है सरल है। डिफ़ॉल्ट प्रारूप में प्रत्येक पंक्ति पर फ़ाइल नाम की दो प्रतियां हैं, और आप केवल दूसरे को संपादित करते हैं। यदि आपने फ़ाइल में लाइनें हटा दी हैं या फिर से चालू की हैं, तो यह सही काम करने की अनुमति देता है, लेकिन यह हमेशा सबसे आसान नहीं होता है। अन्य प्रारूप भी हैं।

इसके साथ qmv, आप अपनी पसंद के कमांड के माध्यम से उत्पन्न फ़ाइल को पाइप करने के लिए चुन सकते हैं, जैसे कि sed, यदि आप संवादात्मक क्षमता नहीं चाहते हैं।


0

और यहाँ एक है नॉटिलस स्क्रिप्ट है कि जगह (सभी?) विंडोज असंगत सभी चयनित फ़ाइल नामों में एक हाइफन (द्वारा उत्तर के आधार पर के साथ पात्रों terdon ;-)

#!/bin/bash
filesall=""
while [ $# -gt 0 ]
    do
        files=`echo "$1" | sed 's/ /\?/g'`
        filesall="$files $filesall"
        shift
    done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done

0

थूनर (XFCE फ़ाइल-मैनेजर) में फ़ाइलों के थोक नामकरण के लिए एक अच्छा निर्माण है। इसमें वर्णों को हटाने / बदलने, खोज करने और बदलने, नंबरिंग फ़ाइलों और अधिक के विकल्प हैं।

थूनर स्थापित करें:

sudo apt-get install thunar

थूनर खोलें, अपनी फ़ाइलों को ब्राउज़ करें, उन्हें चुनें और 'नाम बदलें' (संदर्भ मेनू या F2) के माध्यम से चुनें


0
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit

यह अच्छी तरह से काम करता है और एक चर प्रॉम्प्ट है ... फ़ाइल को कुछ नाम दें जैसे _ Truncate अंतिम अक्षर।
cmd

3
जबकि यह सही हो सकता है, यह एक Windows बैच स्क्रिप्टिंग भाषा का उपयोग करता है। हम उबंटू से संबंधित सवालों के लिए एक साइट AskUbuntu पर हैं, और इसलिए उबंटू-संबंधित उपकरण। मेरा विचार है कि यह उत्तर आवश्यक रूप से यहाँ उपयुक्त नहीं हो सकता है।
सर्गी कोलोडियाज़नी

आपको इसे वाइन के माध्यम से चलाने की आवश्यकता होगी, लेकिन संभवत: इसे उबंटू पर चलाना संभव है ... यह सिर्फ एक अजीब जवाब है, टिस ऑल।
ओली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.