从文本文件

时间:2017-10-06 17:04:13

标签: bash

我正在寻找一个干净的解决方案,让我能够:

  • 查找空文件夹或包含.gitignore文件的文件夹
  • 将它们输出到文本文件
  • 删除文件夹
  • 稍后重新创建它们(没有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中实现这一目标?

2 个答案:

答案 0 :(得分:1)

执行第二阶段的正确方法(删除文件夹):

num_epochs

答案 1 :(得分:1)

如果您的脚本在删除之前一直处于工作状态,但只删除了该文件,则可以使用dirname工具获取路径,直到最后dir=$1 while read -r fn; do rm -rf "${fn%/*}"; done < "$dir/gitignoredir.txt" 删除尾随文件名。

变化:

/

为:

rm -rf $line