【问题标题】:How can I rename files from a list in bash?如何重命名 bash 列表中的文件?
【发布时间】:2011-02-23 01:09:04
【问题描述】:

我有一个包含如下文件名的文件:

my_cool_file.xxx
my_cool_file2.xxx
my_cool_file3.xxx

我有一个文件夹:

some_file.xxx
some_file2.xxx
some_file3.xxx

我想要一个 bash 脚本从文件名文件中取出一行并重命名文件夹中的一个文件。

有没有办法做到这一点?

【问题讨论】:

  • 你确实需要在规范方面做得更好。

标签: bash rename file-rename


【解决方案1】:

注意:这个答案通常不是很好,但它解决了 OP 的问题。

所有文件都以 _file.xxx 或 _fileN.xxx 结尾吗?

基本上,您只想更改文件名的前缀吗?

假设我正确理解了您的问题,并且没有数字的文件在 file_list.txt 中是最后一个,以下应该可以解决问题


COUNTER=0
for FILE in `ls *.xxx | sort`; do
    COUNTER=$(($COUNTER+1))
    echo Moving $FILE to `sed -n ${COUNTER}p file_list.txt`
    #mv "${FILE}" `sed -n ${COUNTER}p file_list.txt`
done

如果您希望实际移动发生,请在mv 的行中发表评论。

【讨论】:

  • 是的。这是正确的。我要重命名的每个文件的末尾都会有一个数字。
  • 那么脚本就不必读取您的文件名列表了吗?文件集中所有的前缀都一样,要改成一样的吗?还是不行?
  • 抱歉 - 文件夹中文件的前缀相同。文件中的前缀不是。
  • 那你怎么知道要重命名什么文件呢?按最后的数字?
  • 在注释行中,我认为最好将文件放在引号中:"$FILE" - 以防名称中有空格。
猜你喜欢
  • 2019-02-20
  • 1970-01-01
  • 2020-02-18
  • 2012-12-31
  • 2017-02-16
  • 2019-12-17
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多