我有一个包含多个目录的目录。这里是目录列表的例子:
每个目录包含多个文件。例如folder1_out包含以下文件:
以同样的方式其他目录包含几个文件夹。我想补充的每个目录的名称在相应的目录文件名。我想在第一个目录(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