如果文件夹为空,如何递归运行“触摸空”?

如果文件夹为空,如何递归运行“触摸空”?

当我将项目添加到 Git 时,我想维护包含空文件夹的文件夹结构。众所周知,Git 不跟踪空文件夹。因此,您需要在空文件夹中添加某种占位符。

到目前为止,我已经设法使用以下命令找到递归空文件夹:

find ./* -type d -empty

我该如何继续?那么在命令之后每个空文件夹都包含一个名为“空”的文件?

答案1

find . -type d -empty -exec touch {}/empty \;

答案2

touch empty在目录中运行。

find ... -execdir touch empty \;

答案3

强制性的“你可以用 bash 来做到这一点”答案:

shopt -s globstar nullglob
for f in ./**/; do [[ $(echo "$f"*) == '' ]] && touch "$f"empty; done

Globstar 的意思是“**递归地扩展到该目录中的每个文件”;**/意味着它只会扩展到目录,而不是常规文件(因为文件名不能包含正斜杠)。

Nullglob 意味着不匹配任何内容的 glob 会扩展为空字节。该测试检查是否发生这种情况(这意味着目录中没有任何内容);如果测试结果为 true(这意味着目录中没有任何内容),则它touchempty目录中。

相关内容