gpt4 book ai didi

linux - 如何将文件列表提供给 bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:48 25 4
gpt4 key购买 nike

我在将大量文件名列表输入命令时遇到问题(git for windows git,我认为它是 cygwin)bash shell。

这是使用一小组参数就可以正常工作的基本命令:git filter-branch -f --tree-filter 'rm -rf file1 directory2 file3 file4'但是,我有大约 1500 个文件名。

我试过:git filter-branch -f --tree-filter 'rm -rf file1 directory2... all 1500 names here'但我得到一个错误:

/mingw64/bin/git: Argument list too long

我尝试使用 for 循环:git filter-branch -f --tree-filter 'for f in $(cat files.txt) ; do rm -fr "$f" ; done'这通过循环运行并出现错误:

cat: files.txt: No such file or directory

仅供引用 - files.txt 内容如下所示:

./file1 
./directory2
./file3
./file4

然后我试了:git filter-branch -f --tree-filter < cat files.txtcat files.txt | git filter-branch -f --tree-filter但我收到有关语法不正确的错误 - 它显示“帮助”对话框。例如:

usage: git filter-branch [--setup ] [--subdirectory-filter ] [--env-filter ] [--tree-filter ] [--index-filter ] [--parent-filter ] [--msg-filter ] [--commit-filter ] [--tag-name-filter ] [--original ] [-d ] [-f | --force] [--state-branch ] [--] [...]

然后我想也许我可以像这样将参数添加到文件中:git filter-branch -f

文件:

--tree-filter './file1 ./directory2 ./file3 ./file4'

但我再次收到“帮助”对话。

我确定有办法做到这一点,但我的 unix-fu 太弱了。请帮忙!


回应@dash-o:

我试过了,但出现错误:

C:/Program Files/Git/mingw64/libexec/git-core\git-filter-branch: eval: line 414: unexpected EOF while looking for matching `'' C:/Program Files/Git/mingw64/libexec/git-core\git-filter-branch: eval: line 415: syntax error: unexpected end of file

files.txt 每行列出一个文件。但是, rm -rf 要求它们在一行上并以空格分隔。

我试图将文件名放在一行中,但出现了不同的错误:

C:/Program Files/Git/mingw64/libexec/git-core\git-filter-branch: line 414: rm -rf .vs ./file1 ./directory2: command not found tree filter failed: 'rm -rf ./file1 ./directory2'

也许单引号被转义了,没有包含在 rm 命令中?

最佳答案

试一试,只要确保你在 files.txt 所在的路径中,以避免“没有这样的文件或目录”错误:

for f in $(cat files.txt); do git filter-branch -f --tree-filter 'rm -rf '"$f"'' ; done

关于linux - 如何将文件列表提供给 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com