我在一个名为 lista.txt 的文件中有一个如下列表:
mickey
donald
daffy
bugs
我有一个包含许多文件的文件夹:filename1、filename2、... filenameN。
我想遍历这些文件以实现:
filename1 => mickey
filename2 => donald ...
你能为我提供这个任务的工作示例代码吗?
我在一个名为 lista.txt 的文件中有一个如下列表:
mickey
donald
daffy
bugs
我有一个包含许多文件的文件夹:filename1、filename2、... filenameN。
我想遍历这些文件以实现:
filename1 => mickey
filename2 => donald ...
你能为我提供这个任务的工作示例代码吗?
为你做你的工作不是我的风格。我宁愿你发布你已经尝试过的东西,这样我可以帮你调试它,但是这个问题太简单了,我还是要咬一口。
x=1; for y in $(cat lista.txt); do mv $y filename$x; let x=$x+1; done
使用 bash 数组:
files=( * )
i=0
while read -r new_name; do
mv "${files[$i]}" "$new_name"
(( i++ ))
done < lista.txt
let "count=1"
for newname in $(cat lista.txt); do
mv "filename$count" "$newname"
let "count++"
done
我使用带有新文件描述符的双重重定向来根据给定的“filelist.txt”重命名目录的所有flac文件:
while read -u 9 filename ; do
read -u 8 newname
echo mv "$filename" "$newname"
done 9<<<"$(ls -1 *flac)" 8< filelist.txt
目录中的每个 .flac 文件名都经过文件描述符 9 到变量“filename”,而在同一迭代中,filelist.txt 的每一行都经过文件描述符 8 到变量“newname”。
是的,可以避免使用新的文件描述符之一,而只需使用默认的标准输入(删除“-u 9”和“9”),但我习惯于不使用标准输入;这样,您可以在循环中包含一个 read 语句以进行交互或控制,并且它不会被重定向的数据填充。
回显用于“仅测试”,应在批准操作后删除。
您可以使用小型 linux 应用程序名称 krename,并打开 javascript 插件。它是一个免费工具,具有非常强大的重命名功能。
转到插件选项卡并将您的 javascript 函数添加到函数定义部分,如下所示:
var files = [
"Mickey",
"Donald",
"Duffy"
];
function rename(){
// krename_index is one of many special variables which can be added via ui
return files[krename_index];
}
这是一个可以完成工作的简单脚本,但它可以根据您的喜好复杂。
转到文件名选项卡并在模板输入中调用您的函数,如下所示:
[js; rename()]
您可以为上述代码添加前缀$
以保留原始文件名并添加到其中。您可以使用“功能”按钮进行进一步实验。