මට රූපවලින් පිරුණු නාමාවලියක් ඇත:
image0001.png
image0002.png
image0003.png
...
එක ලයිනර් එකක් නම් කරන්න (කියන්න).
0001.png
0002.png
0003.png
...
මම මෙය කරන්නේ කෙසේද?
thunar -B *.png
තුනාර්ගේ තොග වශයෙන් නම් කරන ලද ගු මෙවලමට වඩා පහසු නොවේ .
මට රූපවලින් පිරුණු නාමාවලියක් ඇත:
image0001.png
image0002.png
image0003.png
...
එක ලයිනර් එකක් නම් කරන්න (කියන්න).
0001.png
0002.png
0003.png
...
මම මෙය කරන්නේ කෙසේද?
thunar -B *.png
තුනාර්ගේ තොග වශයෙන් නම් කරන ලද ගු මෙවලමට වඩා පහසු නොවේ .
Answers:
ඔබ Bash හෝ වෙනත් POSIX- අනුකූල කවචයක් භාවිතා කරන්නේ නම්:
for f in *.png; do
mv -- "$f" "${f#image}"
done
ඩේබියන් සහ ව්යුත්පන්නයන් මත, පර්ල්ගේ rename
කෘති මේ හා සමාන වේ sed
:
rename -v 's/image//' *.png
එහි ද වේ rename
සිට util-linux
, ඒ වෙනුවට, මේ වගේ බව වැඩ:
rename image '' *.png
rename
වැඩසටහන පැමිණියේ පර්ල් උදාහරණ බෙදාහැරීමකිනි. ඩේබියන් සහ උබුන්ටු එය නැව්ගත කරති /usr/bin/rename
. වෙනත් යුනික්ස් ප්රභේදයන් එය සපයන්නේ නැත, නැතහොත් සම්පූර්ණයෙන්ම වෙනස් විය හැකිය /usr/bin/rename
.
rename
ගනිත් වූ සිට කිරීමට වෙනුවට රටාව:rename [options] <expression> <replacement> <file>...
Zsh කවචයේ ප්රබල කණ්ඩායම් නැවත නම් කිරීමේ විධානයක් zmv
ඇත.
පළමුව ඔබ zmv
පහත පරිදි විධානය සක්රීය කළ යුතුය (මෙය ඔබගේ තුළට යා හැකිය ~/.zshrc
).
autoload zmv
මූලික වාක්ය ඛණ්ඩය වේ zmv PATTERN REPLACEMENT
. රටාව ෂෙල් ග්ලෝබ් ප්රකාශනයකි. රටාවේ කොටස් වරහන් වලින් වට කළ හැකිය. විස්ථාපනය පෙළ අඩංගු විය හැක $1
, $2
රටාව තුළ අර්ථදැක්වීම parenthesised පිරිසක් වෙත යොමු කිරීමට ආදිය. උදාහරණයක් වශයෙන්:
zmv 'image(*.png)' '$1'
ඔබ ද zsh ස්වයංක්රීයව අර්ථ දැක්වීමට අහන්න පුළුවන් $1
, $2
ආදිය රටාව තුළ ආදේශක චරිත වලට ගැලපෙන,:
zmv -w 'image*.png' '$1.png'
මම සාමාන්යයෙන් මෙම භාවිත කේතය සඳහා ලස්සන හා සරල mmv ( man page ) උපයෝගීතාව භාවිතා කරමි:
$ mmv "image*.png" "#1.png"
ඔබේ කාර්යය ඉටු කරයි.
මෙම #1
ඉලක්කය රටාව තුල මූල රටාව තුළ ආදේශක තරග ඕනෑම දෙයක් සමග පත් කරනු ලැබේ. මෙය ආදේශක කාඩ්පත් කිහිපයක් සඳහා ද ක්රියා කරන අතර ගොනු නාමවල කොටස් අනුපිළිවෙල වෙනස් කිරීමට උදාහරණයක් ලෙස භාවිතා කළ හැකිය. කුඩා අකුරු ලොකු අකුරු බවට පරිවර්තනය කිරීම වැනි වඩාත් සංකීර්ණ දේ ඔබට පහසුවෙන් කළ හැකිය.
උපුටා දැක්වීමෙන් කවචයෙන් රටා ආරක්ෂා කිරීමට වග බලා ගන්න.
නැවත නම් කිරීම සඳහා sed භාවිතා කරයි
for i in image*jpg
do
mv -v "$i" "$(echo "$i" | sed -e 's/^\.\/image//' - )"
done
මම පර්ල්ට කැමතියි:
perl -nlE '$old=$_; s/image//; qx(mv $old $_)'
වෙනත් නාමාවලියකට ගොනු පිටපත් කිරීම වැනි වෙනත් කාර්යයන් සඳහා ඔබට එකම රටාව භාවිතා කළ හැකිය:
perl -nlE '$old=$_; s(image)(/path/to/new/dir/); qx(mv $old $_)'
rename($old,$_)
qmv
සිට විධානය renameutils
මඟින් ටැබ් එකකින් වෙන් කර ඇති තීරු දෙකක් සහිත ගොනු නාම ලැයිස්තුවක් පෙන්වන සංස්කාරකයක් විවෘත කරයි. සෑම පේළියකම එක් ගොනු නාමයක් පෙන්වයි, තීරු දෙකෙහිම සමාන වේ. දකුණු තීරුව ලිපිගොනු වල නව නම් නිරූපණය කරයි.
වෙනස්කම් කිරීමට, දකුණු පැත්තේ නම් සංස්කරණය කරන්න. මෙම උදාහරණයේ දී,:%s/...
හෝ දෘශ්ය වාරණ ප්රකාරය ප්රයෝජනවත් වේ.
$ qmv *.png
සංස්කාරකයේ:
image0001.png image0001.png
image0002.png image0002.png
image0003.png image0003.png
~
~
~
~
"/tmp/user/1000/qmvxWyVMs" 3L, 93C
දකුණු තීරුවේ නම් සංස්කරණය කරන්න:
( image
දෘශ්ය වාරණ ප්රකාරය භාවිතයෙන් සියලු පේළි වලින් උපසර්ගය ඉවත් කිරීම )
image0001.png 0001.png
image0002.png 0002.png
image0003.png 0003.png
~
~
~
~
:wq
නැවත නම් කිරීමේ ලොගය:
image0001.png -> 0001.png
image0002.png -> 0002.png
image0003.png -> 0003.png
(උදා: උබුන්ටු: apt-get install renameutils
)
පින්තූර * png ලිපිගොනු තෝරා ගැනීම පහසු වන අතර ගොනු නාමවල නව රේඛා සමඟ කටයුතු කිරීමට අවශ්ය නොවන බව උපකල්පනය කරයි
find . -name "image*.png" | while read f; do mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"; done
ආරක්ෂිත, අවකාශ, නව රේඛා, බැක්ස්ලෑෂ් සහ වෙනත් ඕනෑම දෙයක් සමඟ කටයුතු කළ හැකිය :
find . -name "image*.png" | while IFS= read -r f; do
mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )";
done
ෂෙල් වරහන් පුළුල් කිරීම භාවිතා කිරීම :
for N in {0001..1000}; do mv "{image,}$N.png"; done
විධානයෙන් නම් කියවීම find
.
find . -maxdepth 1 -type f -name 'image*png' | while IFS= read -r f; do
mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"
done
ගොනුවකින් නම් කියවීම
while IFS= read -r f; do mv -v "$f" "$(echo "$f"|sed -e 's/^\.\/image//' - )"; done < flist
නිත්ය ප්රකාශනය (වින්ඩෝස්, ලිනක්ස් සහ ඕඑස් එක්ස් සඳහා සහය දක්වයි) හරහා ගොනු / නාමාවලි නැවත නම් කිරීම සඳහා ආරක්ෂිත හරස් වේදිකා විධාන රේඛා මෙවලමක් වන බ්රෙනේම් ( https://github.com/shenwei356/brename ) උත්සාහ කරන්න .
atpatrickDurusau පැවසුවේ:
ලිනක්ස් සතුව විවිධ කණ්ඩායම් ලිපිගොනු නැවත නම් කිරීමේ විකල්පයන් ඇත, නමුත් මා වෙත පැන ඇති බ්රෙනේම් හි කෙටි-පැමිණීම් කිසිවක් මා දුටුවේ නැත.
විශේෂාංග:
find ./ -name "*.html" -exec CMD
.විධානය:
$ brename -f .png -p image
[INFO] checking: [ ok ] 'image0001.png' -> '0001.png'
[INFO] checking: [ ok ] 'image0002.png' -> '0002.png'
[INFO] checking: [ ok ] 'image0003.png' -> '0003.png'
[INFO] 3 path(s) to be renamed
[INFO] renamed: 'image0001.png' -> '0001.png'
[INFO] renamed: 'image0002.png' -> '0002.png'
[INFO] renamed: 'image0003.png' -> '0003.png'
[INFO] 3 path(s) renamed
සඳහා වින්ඩෝස් සහ ලිනක්ස් , මේ අතර perl බසට තිර රචනය කරන්නේ, මේ අවස්ථාවේ දී:
$ rnm -l 's/^image//' '*.png'
ස්ක්රිප්ටය ඩිරෙක්ටරි යටතේ පුනරාවර්තනය විය හැකි අතර ඒ සියල්ලටම ගණනය කිරීමක් පවා කළ හැකිය:
$ rnm -r 's/^/$counter./' '/\.png$/'
වින්ඩෝස් සහ ලිනක්ස් යන දෙඅංශයෙන්ම යූටීඑෆ් -8 අක්ෂර නිවැරදිව සලකනු ලැබේ.
ඔබට මෙම මෙවලම භාවිතා කළ හැකිය: rnm ( වෙබ් පිටුව )
ඔබේ නඩුවේ විධානය වනුයේ:
rnm -rs '/^image//' *.png
ඔබට තවත් උදාහරණ / ලියකියවිලි මෙතැනින් සොයාගත හැකිය .
ls * png | කියවන අතරතුර -rf; do f2 = "` echo $ f | sed -e's / image // '`"; mv $ f $ f2; ඉවරයි
ls
කිරීම කරදරයක් ඉල්ලා සිටීමකි . read
විය යුතුය read -r
. සියලු විචල්ය ආදේශක ද්විත්ව මිල ගණන් තුළ තිබිය යුතුය.
for f in *png; do f2="$(echo "$f" | sed -e 's/image//')"; mv "$f" "$f2"; done
. විග්රහ ls
කිරීම අවශ්ය හෝ හොඳ අදහසක් නොවේ .