求助一下各位大佬们,这个问题快把我逼疯了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mateor95

求助一下各位大佬们,这个问题快把我逼疯了

  •  
  •   mateor95 2022 年 4 月 20 日 2982 次点击
    这是一个创建于 1465 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:使用脚本自动处理了一大批文件,大约 30000 个,文件名也是从某种关联途径生成的。

    问题:部分生成的文件名里面包含 LF (即换行),导致一些后续处理无法进行

    求助:怎么样才能批量找到这些 文件名中含有 LF 的文件呀?
    25 条回复    2022-11-15 23:55:25 +08:00
    auh
        1
    auh  
       2022 年 4 月 20 日
    改脚本。找到脚本中判断文件名的地方。兼容一下。具体兼容找看语言和方式。搜索关键词,编程语言加你的问题。

    另外,文件名出现问题,内容可能存在同样的问题。如果处理结果也会依赖内容,注意处理结果的准确性。
    mateor95
        2
    mateor95  
    OP
       2022 年 4 月 21 日
    @auh #1
    脚本已经修正,但是不知道要怎么去找到这些除了问题的文件。
    auh
        3
    auh  
       2022 年 4 月 21 日
    @mateor95
    你改脚本的方式,改变了源文件没有?
    如果改变了原文件名,就凉了。找不出来了。
    如果原始数据没有动,只是兼容逻辑判断。直接在逻辑判断的时候,打日志出来。
    就找到了。
    jones2000
        4
    jones2000  
       2022 年 4 月 21 日
    将处理文件的脚本独立出来, 每次处理 1 个文件, 外部单独写一个脚本循环读取文件名,单独起进程给这个处理脚本处理,这样就算 1 个文件处理失败了,也不会导致后面的文件不处理。 增加日志, 处理完成的文件名写入到一个日志里面。这样跑完所有的文件,异常的文件通过所有文件列表-处理完成文件列表可以得到, 然后异常的文件单独手动处理吧。
    flynaj
        5
    flynaj  
       2022 年 4 月 21 日
    "" '' 把文件名包起来。只有操作系统能处理就行。 for /R d:\ /D %i in (*) do fsutil.exe file SetCaseSensitiveInfo "%i" enable
    mateor95
        6
    mateor95  
    OP
       2022 年 4 月 21 日 via iPhone
    @auh #3
    现在问题就在于,源文件是每日生成每日处理的,但处理出来的文件是每周才进行一次处理。源文件已经没有了
    mateor95
        7
    mateor95  
    OP
       2022 年 4 月 21 日 via iPhone
    @jones2000 #4
    看起来不存在直接找到这些文件的办法是吗?只能通过先处理一部分文件,再反向找这些不成功的文件是吗?
    mateor95
        8
    mateor95  
    OP
       2022 年 4 月 21 日 via iPhone
    @flynaj #5
    不好意思,手头没有 windows 可以测试。请问下有没有 linux 下的办法?
    skys215
        9
    skys215  
       2022 年 4 月 21 日
    文件名中包含 LF ?
    darkengine
        10
    darkengine  
       2022 年 4 月 21 日
    先批量处理重命名文件,把文件名里的 LF 去掉,再运行原脚本
    jones2000
        11
    jones2000  
       2022 年 4 月 21 日
    @mateor95 新的问题会一直出现的, 只能是有 1 个机制,可以确保正确的文件名可以运行,异常的文件可以列出来,这样才能快速的改进这个脚本, 否则你解决了这个问题,下次出来新的问题又要重新排查一遍, 多麻烦。
    skys215
        12
    skys215  
       2022 年 4 月 21 日   2
    find ./ -name "*(ctrl+v ctrl+j)*" 就能找到文件名含 lf 的文件。
    括号部分是你要按的键,而不是输入的内容。如果是 CR ,那就是 ctrl+v ctrl+m ,会显示为^M

    相信重命名的命令对你来说也不是什么难事
    mateor95
        13
    mateor95  
    OP
       2022 年 4 月 21 日 via iPhone
    @darkengine 问题在于,“找不到”这些带 LF 的文件
    mateor95
        14
    mateor95  
    OP
       2022 年 4 月 21 日 via iPhone
    @jones2000 #11
    是的,目前已经改好了这部分机制,但是老的文件让人头疼
    dier
        15
    dier  
       2022 年 4 月 21 日
    有个不是办法的办法,你可以试试
    在这个目录下,尝试对每个文件使用 head 命令查看一下文件第一行,如果文件名有换行符,理论上是打不开的,然后就把打不开的文件名输出到一个 txt 中。

    ```shell
    cd /path/
    for FILENAME in $(ls)
    do
    head -n 1 ${FILENAME} > /dev/null 2>&1 || echo ${FILENAME} >> /tmp/LF_file_list.txt
    done

    ```
    mateor95
        16
    mateor95  
    OP
       2022 年 4 月 21 日
    @skys215 #12
    谢谢老哥,找出来了大部分文件,剩下的居然还是找不出来,真是离奇...
    mateor95
        17
    mateor95  
    OP
       2022 年 4 月 21 日
    @dier #15
    我找了个文件测试了一下,在我这里带 LF 的,head 居然可以打开...
    mateor95
        18
    mateor95  
    OP
       2022 年 4 月 21 日
    @skys215 感谢老哥,问题解决了,处理不到的是第二个问题了,谢谢
    dier
        19
    dier  
       2022 年 4 月 21 日
    @mateor95 #17 因为我没有你说的这种文件,所以没办法验证。不过你们的处理方式打不开的话可以把我脚本中的 head 命令替换成你们的处理方式试试。
    skys215
        20
    skys215  
       2022 年 4 月 22 日
    @mateor95 我就随手谷歌了一下,不足挂齿
    mateor95
        21
    mateor95  
    OP
       2022 年 4 月 23 日
    @skys215 #20
    咋搜的,为啥我搜到的跟你搜到的不一样..
    skys215
        22
    skys215  
       2022 年 4 月 24 日
    通过 linux find filename with CRLF 找到了 ctrl+v ctrl+m 可以输入 CR
    那只要再搜索如何输入 LF 就好了
    xiubin
        23
    xiubin  
       2022 年 11 月 12 日
    抱歉 同学,因找不到联系方式所以在老帖子里联系你,我最近开始玩 nas ,接触到了 pt 站,在 v2 上有看到过你曾经分享过馒头站的邀请码,冒昧的问下可以送一个邀请码吗,懂规矩,有上传和下载的。aW9zZ2dAb3V0bG9vay5jb20=

    谢谢~
    mateor95
        24
    mateor95  
    OP
       2022 年 11 月 15 日
    @xiubin #23 outlook/hotmail 发不了,gmail 或者 qq 吧
    xiubin
        25
    xiubin  
       2022 年 11 月 15 日
    @mateor95 #24 感谢~
    eGl1YmluLndhbmdAcXEuY29t
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     964 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 22:45 PVG 06:45 LAX 15:45 JFK 18:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86