我想使用具有适当名称的.txt文件重命名我的文件这些是我的文件:
lesson1.mp4 lesson2.mp4 lesson3.mp4 ...
这是我的txt文件,文件名为:我想要的结果是:
dl5txlt91#
大概是这样的file.txt及其内容*.mp4文件。
file.txt
*.mp4
lesson1.mp4 lesson2.mp4 lesson3.mp4 lesson4.mp4
剧本。
#!/bin/sh counter=1 while IFS= read -r files; do echo mv -v "lesson$counter.mp4" "$files.mp4" counter=$((counter+1)) done < file.txt
使用bash的另一种方法
bash
#!/usr/bin/env bash counter=1 while [[ -e lesson$counter.mp4 ]]; do IFS= read -r files && echo mv -v "lesson$counter.mp4" "$files.mp4" ((counter++)) done < file.txt
事先知道课程的数量,看起来像是知道的。使用大括号扩展和bash。
#!/usr/bin/env bash for file in lesson{1..4}.mp4; do IFS= read -r files && echo mv -v "$file" "$files.mp4" done < file.txt
echo
不使用echo时的输出
renamed 'lesson1.mp4' -> '1 Entry to vim.mp4' renamed 'lesson2.mp4' -> '2 Basic of vim.mp4' renamed 'lesson3.mp4' -> '3 vim motion.mp4' renamed 'lesson4.mp4' -> '4 Search and Replace.mp4'
编辑:这是我的txt文件,文件名为:因为不清楚text文件是否包含名称的内容,或者是文本文件本身具有唯一名称,如下所示。下面是后者的解决方案*.mp4文件
text
lesson1.mp4 lesson2.mp4 lesson3.mp4 lesson4.mp4 lesson5.mp4 lesson6.mp4 lesson7.mp4 lesson8.mp4 lesson9.mp4 lesson10.mp4 lesson11.mp4
单个文本文件:bash脚本。
#!/usr/bin/env bash counter=1 shopt -s nullglob text_files=([1-9]*\ [Vv]im*) shopt -u nullglob while [[ -e "lesson$counter.mp4" ]]; do for i in "${!text_files[@]}"; do [[ -f "${text_files[i]}" ]] && text_files_counter="${text_files[i]%% *}" (( counter == text_files_counter )) && echo mv -v "lesson$((counter++)).mp4" "${text_files[i]}.mp4" && unset -v 'text_files[i]' done text_files=("${text_files[@]}") done
renamed 'lesson1.mp4' -> '1 Entry to vim.mp4' renamed 'lesson2.mp4' -> '2 Basic of vim.mp4' renamed 'lesson3.mp4' -> '3 vim motion.mp4' renamed 'lesson4.mp4' -> '4 Search and Replace vim.mp4' renamed 'lesson5.mp4' -> '5 macros vim.mp4' renamed 'lesson6.mp4' -> '6 buffers vim.mp4' renamed 'lesson7.mp4' -> '7 tabs vim.mp4' renamed 'lesson8.mp4' -> '8 windows vim foo.mp4' renamed 'lesson9.mp4' -> '9 insert vim.mp4' renamed 'lesson10.mp4' -> '10 vim global.mp4' renamed 'lesson11.mp4' -> '11 help vim.mp4'
1条答案
按热度按时间dl5txlt91#
大概是这样的
file.txt
及其内容*.mp4
文件。剧本。
使用
bash
的另一种方法事先知道课程的数量,看起来像是知道的。使用大括号扩展和bash。
echo
。不使用
echo
时的输出编辑:
这是我的txt文件,文件名为:
因为不清楚
text
文件是否包含名称的内容,或者是文本文件本身具有唯一名称,如下所示。下面是后者的解决方案
*.mp4
文件单个文本文件:
bash
脚本。不使用
echo
时的输出