gpt4 book ai didi

string - 检查文件名字符是否匹配白名单之外

转载 作者:行者123 更新时间:2023-11-29 09:21:46 25 4
gpt4 key购买 nike

bash 中,我想测试一些目录是否包含我已列入白名单的文件名:

[a-z]
[A-Z]
[0-9]
[+-_ßäöüÄÖÜ.,]
[ ]

(即一个空格可以,连续两个或更多则不行)。
尝试

$ ls my/dir/ |grep --color=always -v [a][b][c][d][e][f][g][h][i][j][k][l][m][n][o][p][q][r][s][t][u][v][w][x][y][z][A][B][C][D][E][F][G][H][I][J][K][L][M][N][O][P][Q][R][S][T][U][V][W][X][Y][Z][0][1][2][3][4][5][6][7][8][9]

生成所有文件,甚至包含用于测试的 # 字符的文件。

的“速记”也是如此
$ ls my/dir/ |grep --color=always -v [a-zA-Z0-9]

(是的,我知道我必须稍后将 [+-_ßäöüÄÖÜ., ] 字符包含在其中)。

我试过为此使用diff:

$ diff -y <(ls -1 my/dir/) <(ls -1 /my/dir/|tr -cd '[a-zA-Z0-9\n\r \-\.\,]')|grep --color=never '|'|cut -d "|" -f 1

它输出我的 tr 列表之外的文件名:

A File Containing Some Rainbo#ws.wav

但这看起来很笨拙...有什么想法,嗯,更好

最佳答案

$ find -name '*[^a-zA-Z0-9+\-_ßäöüÄÖÜ., ]*' -o -name '*  *'

参见 man find。您可能也对 -regex-maxdepth 选项感兴趣。

附言:Don't parse the output of ls .

关于string - 检查文件名字符是否匹配白名单之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960460/

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