8

我在一个名为 lista.txt 的文件中有一个如下列表:

mickey
donald
daffy 
bugs

我有一个包含许多文件的文件夹:filename1、filename2、... filenameN。

我想遍历这些文件以实现:

filename1 => mickey 
filename2 => donald ...

你能为我提供这个任务的工作示例代码吗?

4

5 回答 5

7

为你做你的工作不是我的风格。我宁愿你发布你已经尝试过的东西,这样我可以帮你调试它,但是这个问题太简单了,我还是要咬一口。

x=1; for y in $(cat lista.txt); do mv $y filename$x; let x=$x+1; done
于 2011-07-11T08:17:07.320 回答
6

使用 bash 数组:

files=( * )
i=0
while read -r new_name; do
  mv "${files[$i]}" "$new_name"
  (( i++ ))
done < lista.txt
于 2011-07-11T10:30:44.280 回答
3
let "count=1"

for newname in $(cat lista.txt); do
  mv "filename$count" "$newname"
  let "count++"
done
于 2011-07-11T08:19:50.217 回答
2

我使用带有新文件描述符的双重重定向来根据给定的“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 语句以进行交互或控制,并且它不会被重定向的数据填充。

回显用于“仅测试”,应在批准操作后删除。

于 2013-02-16T02:42:33.680 回答
0

您可以使用小型 linux 应用程序名称 krename,并打开 javascript 插件。它是一个免费工具,具有非常强大的重命名功能。

  1. 安装 Krename 并打开它
  2. 添加文件
  3. 转到插件选项卡并将您的 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];
    }
    

这是一个可以完成工作的简单脚本,但它可以根据您的喜好复杂。

  1. 转到文件名选项卡并在模板输入中调用您的函数,如下所示:

    [js; rename()]

您可以为上述代码添加前缀$以保留原始文件名并添加到其中。您可以使用“功能”按钮进行进一步实验。

  1. 单击“完成”按钮预览新名称并分配新名称。
于 2019-05-16T03:42:20.390 回答