每个目录的添加文件名Linux中的相应目录中

问题描述 投票:-1回答:1

我有一个包含多个目录的目录。这里是目录列表的例子:

  • dir1_out
  • dir2_out
  • dir3_out
  • dir4_out

每个目录包含多个文件。例如folder1_out包含以下文件:

  • 菲尔·1
  • 文件2
  • 维拉

以同样的方式其他目录包含几个文件夹。我想补充的每个目录的名称在相应的目录文件名。我想在第一个目录(dir1_out)以下结果:

  dir1.file1
  dir1.file2
  dir1.file3

因为我有大约50目录我想编写一个循环拍摄每一个目录的名称,并添加名称,所有子文件的的开始。

你有什么想法,我该怎么办,在Linux操作系统。

linux loops directory file-rename batch-rename
1个回答
1
投票

一个简单的bash onliner如果没有太多的文件是:

for p in */*; do [ -f "$p" ] && mv -i "$p" "${p%/*}/${p/\//.}"; done

它使用参数扩展来生成新的文件名,检查我们试图重新命名一个实际的文件后 - 请参阅${parameter%word}${parameter/pattern/string}的bash的手册页描述

如果可能有太多的文件安全地扩展他们都到一个列表:

#!/bin/bash
find . -maxdepth 2 -print |\
while read p; do
    p="${p#./}"
    mv -i "$p" "${p%/*}/${p/\//.}"
done
© www.soinside.com 2019 - 2024. All rights reserved.