我正在寻找一个干净的解决方案,让我能够:
gitignore
,只有目录结构)现在这就是我所拥有的:
1)查找空的文件夹或包含.gitignore文件并将其输出到文件
dir = $1
find /c/methuselah/$dir/ -name .gitignore > $dir/gitignoredir.txt
find /c/methuselah/$dir/ -type d -empty > $dir/emptydir.txt
gitignoredir.txt:
的示例文件内容
/c/methuselah/project/folder1/subfolder1/.gitignore
/c/methuselah/project/folder1/subfolder2/.gitignore
/c/methuselah/project/folder1/subfolder3/.gitignore
emptydir.txt
不包含任何内容,因为空文件都包含.gitignore文件。
2)删除文件夹
dir = $1
filename=$dir/gitignoredir.txt
filelines='cat $filename'
for line in $filelines
do
echo 'Removing $line'
rm -rf $line
done
不幸的是,这不起作用,因为它只删除.gitignore文件。这意味着保留空文件夹。我想删除它们作为删除过程的一部分。我将如何在Bash中实现这一目标?
答案 0 :(得分:1)
执行第二阶段的正确方法(删除文件夹):
num_epochs
答案 1 :(得分:1)
如果您的脚本在删除之前一直处于工作状态,但只删除了该文件,则可以使用dirname
工具获取路径,直到最后dir=$1
while read -r fn; do rm -rf "${fn%/*}"; done < "$dir/gitignoredir.txt"
删除尾随文件名。
变化:
/
为:
rm -rf $line