zoukankan      html  css  js  c++  java
  • 批量修改含空格的文件名「Linux」

    1、问题:文件批量重命名和处理文件名中的空格

    • 如果文件名中有空格,在执行以下shell脚本的时候会出错。
    • shell 脚本
    for filename in `ls`
    do
       echo $filename
    done
    
    • 执行结果:会将带空格的文件名,以空格作为截分,分两次(多次)输出。

    2、原因分析及对策

    • 原因:Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符。默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。

    • 对策:只需要重置改变量,用完以后记得还原变量。

    3、 示例代码

    • 例子1:写成一行
    IFS_old=$IFS; IFS=$'
    ';for name in `ls`; do mv $name LW_$name; done; IFS=$IFS_old;
    
    • 例子2:写成多行
    IFS_old=$IFS
    IFS=$'
    '
    
    for name in `ls` 
    do 
        mv $name LW_$name
    done
    
    IFS=$IFS_old
    
  • 相关阅读:
    魔改版BBR
    termux 开启 sshd
    Basic berkeley socket functions
    mosh
    XOR 加密
    指定so动态链接库连接器
    UTF8 UTF16 之间的互相转换
    MySQL C API概述
    C JAVA你可能不知道的那些编程细节
    虚拟内存
  • 原文地址:https://www.cnblogs.com/juking/p/11195459.html
Copyright © 2011-2022 走看看