相关疑难解决方法(0)

如何从git grep搜索中排除某些目录/文件

有没有办法搜索git存储库,git grep但从搜索中排除某些路径/目录/文件?像--exclude普通grep命令中的选项一样.

如果你很好奇:我不想使用普通的grep,因为它比git grepgit存储库的大小要慢得多.

git grep

121
推荐指数
4
解决办法
3万
查看次数

为什么我不在bash中启用extglob?

我刚刚在这里找到了关于bash extglob shell选项: - 在unix/linux shell中进行模式匹配时如何使用反向或负向通配符?

所使用的所有答案shopt -s extglob也提到shopt -u extglob将其关闭.我为什么要把这么有用的东西转过来?确实,为什么不默认开启?据推测,它有可能带来一些令人讨厌的惊喜.这些是什么?

bash

47
推荐指数
1
解决办法
1万
查看次数

Pattern match does not work in bash script

Using the pattern match !("file1") does not work within a bash script but will work on the command line.

For example:

ls  !("file1"|"file2")
Run Code Online (Sandbox Code Playgroud)

This will list all files in directory except file1 and file2.

When that line is executed in a script this error is displayed:

./script.sh: line 1: syntax error near unexpected token `('
./script.sh: line 1: ` ls  !("file1"|"file2") ' 
Run Code Online (Sandbox Code Playgroud)

Regardless what is used rm -v !("file1"). The same error takes place. What is going on …

linux bash glob extglob

13
推荐指数
2
解决办法
469
查看次数

列出与选择器不匹配的所有文件(使用ls)

可能重复:
在unix/linux shell中进行模式匹配时如何使用反向或负向通配符?

我已经阅读了该man页面ls,我找不到列出所有与文件选择器匹配的选项.你知道怎么做这个操作吗?

例如:假设我的目录是这样的:

> ls
a.txt b.mkv c.txt d.mp3 e.flv
Run Code Online (Sandbox Code Playgroud)

现在我想做一些能做到以下事情的事情

> ls -[SOME_OPTION] *.txt
b.mkv d.mp3 e.flv
Run Code Online (Sandbox Code Playgroud)

有这样的选择吗?

如果没有,有没有办法将输出管道输出ls到另一个功能(可能sed),只显示我想要的功能?

我不知道该怎么做,但我想它会是这样的:

> ls | sed [SOMETHING] 
Run Code Online (Sandbox Code Playgroud)

我真的应该学习如何使用sed,awkgrep,但我一直在坚持理解如何编写正则表达式.我清楚地理解正则表达式的概念,但我对使用不同语法的正则表达式感到困惑.

任何帮助将非常感激!

编辑:

我忘了提,我正在运行的Mac OS X,这样的功能可以是在其他的答案为UNIX/Linux外壳讨论的略有不同(因此我的一些困惑与sed,awkgrep).

shell terminal command-line ls sed

12
推荐指数
5
解决办法
3万
查看次数

从shell globbing中排除特定文件名

我想fubar.log从shell(bash)globbing字符串中删除特定的文件名(例如)*.log.我尝试过的任何东西似乎都不起作用,因为globbing不使用标准RE集.

测试用例:目录包含

fubar.log
fubaz.log
barbaz.log
text.txt
Run Code Online (Sandbox Code Playgroud)

并且只能fubaz.log barbaz.log通过glob扩展.

shell

11
推荐指数
1
解决办法
9097
查看次数

击.删除所有文件和目录,但删除某些文件

我正在编写一个脚本,需要从目录中删除所有内容,除了两个目录,mysql和temp.

我试过这个:

ls * | grep -v mysql | grep -v temp | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)

但这也保留了所有名称中包含mysql的文件,我不需要.它也不会删除任何其他目录.

有任何想法吗?

directory bash ubuntu file

11
推荐指数
2
解决办法
1万
查看次数

从git空白检查中排除Jest快照

我正在使用git提交修剪空白git diff-index --check --cached HEAD --.我想使用快照添加Jest测试,但快照文件包含空格,如果删除它,我的测试将始终失败.所以我想*.js.snap从空白检查中排除文件.如何告诉git从中排除*.js.snap(或替代**/__snapshots/*)文件git diff-index?我在OSX上使用bash.

与此同时,我正在通过将提交挂钩更改为交互式来解决此问题:

# If there are whitespace errors, print the offending file names and fail.
git diff-index --check --cached HEAD --
if [ $? -ne 0 ]; then
    # Allows us to read user input below, assigns stdin to keyboard
    exec < /dev/tty

    while true; do
        echo "Your commit introduces trailing whitespace.  Are you sure you want to commit? y/n"
        read yn
        case $yn …
Run Code Online (Sandbox Code Playgroud)

git whitespace githooks jestjs

8
推荐指数
1
解决办法
1081
查看次数

在Bash中工作时如何处理"Too many files"问题?

我不得不使用包含数十万个文件的目录,进行文本匹配,替换等等.如果我走标准路线,比如说

grep foo *
Run Code Online (Sandbox Code Playgroud)

我收到太多文件错误消息,所以我最终做了

for i in *; do grep foo $i; done
Run Code Online (Sandbox Code Playgroud)

要么

find ../path/ | xargs -I{} grep foo "{}"
Run Code Online (Sandbox Code Playgroud)

但这些并不是最优的(为每个文件创建一个新的grep进程).

这看起来更像是程序可以接收的参数大小的限制,因为for循环中的*可以正常工作.但是,无论如何,处理这个问题的正确方法是什么?

PS:不要告诉我做grep -r,我知道,我正在考虑没有递归选项的工具.

unix bash shell

6
推荐指数
2
解决办法
7879
查看次数

在Linux中,如何复制不以给定字符串开头的所有文件?

我尝试使用以下命令:

cp src_folder/[!String]* dest_folder
Run Code Online (Sandbox Code Playgroud)

但是,此命令将复制所有不以任何字符'S','t','r','i','n','g'开头的文件,而不是复制不复制的文件以"String"开头.

regex unix linux cp

6
推荐指数
2
解决办法
2万
查看次数

bash:反向(即NOT)shell通配符扩展?

有没有办法处理invers bash v4 shell扩展,即.处理所有文件不像通配符?我需要在这种情况下rm不是格式的所有文件,'Folder-???'并且想知道是否有更短的(即内置)方式然后做一个

for file in *
do
  [[ $i =~ \Folder-...\ ]] && rm '$i'
done
Run Code Online (Sandbox Code Playgroud)

环.(这个例子不起作用,顺便说一下......)

刚出来的bash学习好奇心......

bash glob

6
推荐指数
1
解决办法
3799
查看次数

标签 统计

bash ×5

shell ×3

git ×2

glob ×2

linux ×2

unix ×2

command-line ×1

cp ×1

directory ×1

extglob ×1

file ×1

githooks ×1

grep ×1

jestjs ×1

ls ×1

regex ×1

sed ×1

terminal ×1

ubuntu ×1

whitespace ×1