我有一个文件夹结构,可以有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