如何使用脚本递归地创建具有文件夹名称的文件



我有一个文件夹结构,可以有x个子文件夹,如下所示:

  • 文件夹1
    • 子文件夹1
    • 子文件夹2
      • 子文件夹3
  • 文件夹2

我想创建一个空文件,该文件的父文件夹中有子文件夹的名称(附加.file(,如下所示:

  • 文件夹1
    • 子文件夹1.file(新创建的与姐妹文件夹同名的文件(
    • 子文件夹1
    • 子文件夹2.file(新创建的与姐妹文件夹同名的文件(
    • 子文件夹2
      • 子文件夹3.file(新创建的与姐妹文件夹同名的文件(
      • 子文件夹3
  • 文件夹2

有些文件夹的名称中可能有空格,所以我尝试了以下操作,但它不起作用,即使回显$(dirname$dir(/$dir似乎会产生预期的结果:

#!/bin/bash
find . -mindepth 1 -type d | while read dir
do
touch $(dirname $dir)/$dir.file
done

实现这一目标的最佳方式是什么?提前感谢您!

帖子更新以尝试更清晰的

也许你可以试试:

find . -type d | while IFS= read -r d
do 
( cd "$d" && cd .. && touch "$(basename "$d").file" ) 
done

我尝试过awk,请检查它是否对您有用。我给文件名的.file

realpath Fol*/* | awk '{print "touch "$1".file"}' | sh

相关内容

  • 没有找到相关文章

最新更新