繁体   English   中英

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

[英]Add name of each directory to files inside the corresponding directory in linux

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

  • dir1_out
  • dir2_out
  • dir3_out
  • dir4_out

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

  • 文件1
  • 文件2
  • 文件3

其他目录以相同的方式包含多个文件夹。 我想将每个目录的名称添加到相应目录中的文件名中。 我想在第一个目录(dir1_out)中得到以下结果:

  dir1.file1
  dir1.file2
  dir1.file3

由于我有大约50个目录,因此我想编写一个循环,该循环采用每个目录的名称,并将名称添加到所有子文件的开头。

你有什么主意,我怎么能在Linux中做到这一点。

如果文件太多,一个简单的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM