【问题标题】:Renaming file names from two files content in linux从linux中的两个文件内容重命名文件名
【发布时间】:2018-03-02 21:34:13
【问题描述】:

我有 Linux 的基本知识,需要您的帮助来开发以下要求的概念。我有两个文件 FILE_NAMES.txt 和 FILE_NAMES_TS.txt。文件内容如下。

FILE_NAMES.txt
====
jan_
feb_
mar_

FILE_NAMES_TS.txt
====
jan_20170921.csv
feb_20170921.csv
mar_20170921.csv

以上所有内容都是文件名,都放在db_views/data目录下。 FILE_NAMES_TS.txt 的内容最初为 0 字节。现在必须将jan_ 移动/重命名为jan_20170921.csv,依此类推。这意味着文件jan_20170921.txt 现在是非零字节。请帮忙。

【问题讨论】:

  • 问题不清楚。您从两个文件名 FILE_NAMES.txtFILE_NAMES_TS.txt 开始,而后者是空的?还是您从许多文件开始,包括文件名jan_feb_ 等,并且您想将jan_ 移动到jan_20170921.csv 并在FILE_NAMES_TS.txt 中添加一个条目?
  • 无需添加条目。只需将 jan_ 移动到 jan_20170921.csv 等等。

标签: linux renaming


【解决方案1】:

您可以使用 readarray bash 函数将文件读入 2 个数组,然后使用 mv 命令重命名每个文件

#!/bin/bash

readarray a < names.txt
readarray b < names_ts.txt

len=${#a[@]}

echo $len

for (( i=0; i<${len}; i++ ));
do
    echo mv ${a[$i]} ${b[$i]}
done

【讨论】:

  • 感谢 Richard 分享代码。我当前的 Linux 环境中不允许使用“readarray”命令。是否有替代命令来执行脚本。感谢您的帮助。
【解决方案2】:

您可以扩展special file-descriptor technique 以同时读取两个文件,然后再读取mv

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2021-08-20
    • 2022-01-13
    • 1970-01-01
    • 2014-11-30
    • 2012-06-14
    • 2020-11-23
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多