У меня есть разные HTML-файлы в папке. Как переименовать файлы так, что они имеют имена:
1.html
2.html
3.html
...Переименование файлов в папке (linux)
0
A
ответ
2
Это может сделать это:
i=1
for file in /your/folder/*
do
mv $file ${i}.html
i=$((i+1)) #((i++)) was giving errors (see comments)
done
Он обрабатывает все файлы в /your/folder
и переименовывает их в соответствии с номером $i
, который продолжает увеличиваться.
1
Вот мой сценарий
#!/bin/sh
#
# batchrename - renames files like 01.ext, 02.ext ...
#
# format : batchrename <list of files>
# or: -r <extension> <<list of files> or <dir>>
# -r - recoursively
counter=0
extrec=""
if [ "$#" -lt "1" ]; then
echo -e "\n\t\tUsage:\n\tbatchrename [opt]\nopt:"
echo -e "-r <ext> <folder> (or file list) -- renames recoursively ALL files"
echo -e "\tin folder <folder> (or by file list given) with extension .<ext>"
echo -e "<folder> -- renames ALL files in folder given"
echo -e "<file list> -- renames ALL files of given filelist.\n\n"
exit 0
fi
Name="$*"
if [ "$1" = "-r" ]; then
extrec="$2"
shift
shift
Name="$*"
[ "$Name" = "" ] && Name="./"
fi
echo -e "\n\t\t\tRENAMING"
for file in $Name
do
file=`echo "$file" | sed "s/<>/ /g"`
if [ -d "$file" ];then
echo -e "\nDiving into \033[38m $file \033[39m"
cd "$file"
if [ "$extrec" != "" ]; then
batchrename -r $extrec `ls -1 | sed "s/\ /<>/g"`
else
batchrename `ls -1 | sed "s/\ /<>/g"`
fi
cd ../
continue
fi
ext=`ext "$file"`
if [ "$ext" = "ion" ]; then
continue
fi
if [ "$extrec" = "" -o "$ext" = "$extrec" ];then
counter=`expr $counter + 1`
echo -e "Progress: $counter files\r\c"
mv "$file" "rnmd$counter.$ext"
fi
done
echo -e "\n\n\t\t\tENDING"
digits=`echo $counter|awk '{print length ($0)}'`
cnt=1
while [ $digits -gt $cnt ]
do
f=`ls -S -1|grep "rnmd[0-9]\{$cnt\}\."`
rename rnmd rnmd0 $f
cnt=`expr $cnt + 1`
done
if [ "$counter" -gt "0" ]; then
rename rnmd "" rnmd*
fi
echo -e "\n\t\t\tDone !!!\n"
После переименования всех ваших файлов будут смахивает 001.file, 002.file, ... и так далее. Количество начальных нулей зависит от количества файлов. Итак, после переименования ls
отобразит правильный порядок файлов!
Он использует промежуточный сценарий ext
:
#!/bin/sh
#
# ext - returns file suffix (case-unsensitive)
#
File="$*"
if [ -d "$File" ]; then
echo ""
exit 0
fi
EXT=`echo $File|sed 's/.\{1,\}\.//g'`
if [ "$EXT" = "$File" ]; then
EXT=""
fi
echo $EXT| tr '[:upper:]' '[:lower:]'
Смежные вопросы
- 1. Переименование файлов в папке
- 2. переименование файлов в папке
- 3. Переименование некоторых файлов в папке
- 4. Переименование файлов в папке последовательно
- 5. Переименование всех файлов в папке
- 6. Переименование нескольких файлов в папке
- 7. Переименование всех файлов в папке
- 8. Переименование файлов Linux
- 9. Массовое переименование файлов (Linux)
- 10. Пакетное переименование файлов в Linux
- 11. Переименование нескольких файлов в папке в unix
- 12. Пакетное переименование всех файлов в папке
- 13. Переименование всех файлов в другой папке?
- 14. Пакетное переименование файлов в папке, добавив дату
- 15. Переименование дубликатов файлов в папке с php
- 16. Переименование файлов в папке с использованием макроса
- 17. PHP - переименование файлов в папке temp
- 18. Переименование файлов в папке из текстового файла
- 19. Python: переименование первых 5 файлов в папке
- 20. Переименование многих файлов в папке - PHP
- 21. Переименование нескольких файлов - linux/ubuntu
- 22. Переименование файлов в папке на основе имен в другой папке
- 23. Переименование нескольких файлов в каталоге в Linux
- 24. Переименование файлов в Shell Script Linux
- 25. Переименование нескольких файлов в Linux/Unix
- 26. Массовое переименование файла в Linux
- 27. Переименование файлов в оболочке
- 28. Переименование набора файлов 001, 002, ... на Linux
- 29. linux script: массовое переименование файлов с пробелами
- 30. Переименование файлов в подкаталогах с использованием сценария bash в linux
'((я ++)) # или я = $ ((я + 1)) или пусть я = я + 1 ' – devnull
Таким образом, мы имеем 3-й вариант. Вы знаете, какой из них лучше? – fedorqui
Трудно сказать, что является лучшим. Все выполняют арифметические операции. BTW, 'let i ++' является более читаемым IMHO. – devnull