Cmd लाइन यूनिक्स से फाइल नामों में रिक्त स्थान बदलें


5

नमस्ते, मेरे पास नाम में रिक्त स्थान के साथ फ़ाइलों का एक गुच्छा है, क्या उन्हें रिक्त स्थान के बिना नई फ़ाइलों में एमवी करने का एक तरीका है। उदाहरण के लिए मेरे पास फ़ाइल है Hello World.pdf मैं इसे Hello_World.pdf पर स्थानांतरित करना चाहता हूं। स्पष्ट रूप से एक फाइल के लिए मैं एमवी कमांड का उपयोग कर सकता हूं लेकिन मैं इसे सभी फाइलों में एक फ़ोल्डर में करना चाहता हूं।

धन्यवाद


मुझे यहाँ एक XY समस्या पर शक है। क्या आप हमें बता सकते हैं कि आपको उन स्थानों को बदलने की आवश्यकता क्यों है?
गीकल

जवाबों:


9

आप इसके लिए tr या sed कमांड का उपयोग कर सकते हैं :

for file in *.pdf
do
    newname=$(echo $file | tr ' ' _)
    mv "$file" $newname
done

ध्यान दें कि यह कमांड प्रतिस्थापन के लिए नए POSIX सिंटैक्स का उपयोग करता है: $ ( कमांड )।
यदि आप एक पुराने बॉर्न शेल का उपयोग कर रहे हैं, तो आपको बैकटिक्स का उपयोग करना होगा:

newname=`echo $file | tr ' ' _`

3

इस कार्य के लिए मैं कुछ लिपियों का उपयोग कर रहा हूँ:

#!/bin/ksh
# Name     : unspace - replace spaces by underscores in file names
# Usage    : unspace [file ...]
# Example  : unspace *.doc
unspace()
{
  ls "$@" | while a=$(line)
  do
    file=$(echo $a | grep " ")
    if [ -n "$file" ]
    then
      file="$(print "$file" | sed 's/ /_/g')"
      print "$a" "->" "$file"
      mv "$a" "$file"
    fi
  done
}
[[ "$(basename $0)" = unspace ]] && unspace "$@"

निम्नलिखित एक वर्तमान निर्देशिका के तहत सभी नामों को पुनरावर्ती रूप से तय कर रहा है। ध्यान दें कि यदि निर्देशिका नामों में एम्बेडेड स्थान भी हैं तो भी इसे कुछ काम करने की आवश्यकता है।

#!/bin/ksh
find . |
  while a=$(line)
  do
          newName="$(print $a | tr ' ' '_')"
          if [ "$a" != "$newName" ]
          then
                  mv "$a" "$newName"
                  print $a moved
          else
                  print $a unchanged
          fi
  done

0

यदि आपके पास बैश है, तो बाहरी उपकरणों को कॉल करने की आवश्यकता नहीं है

for file in *.pdf
do 
  if [ -f "$file" ];then
     echo mv "$file" "${file// /_}"
  fi
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.