触摸循环

触摸循环

ls给我:

10 11 12 12L 13 16 702 702L

等等,我想创建文件

10_ 11_ 12_ 12L_ 13_

等等。但是,

$ for f in *; do touch "$f_"; done

给我:

touch: cannot touch '': No such file or directory
touch: cannot touch '': No such file or directory
touch: cannot touch '': No such file or directory
touch: cannot touch '': No such file or directory

还,

$ for f in *; do touch $f_; done

给出:

Try 'touch --help' for more information.
touch: missing file operand
Try 'touch --help' for more information.
touch: missing file operand
Try 'touch --help' for more information.
touch: missing file operand

这个目录中有超过 100 个文件,我不打算在没有脚本的情况下执行此操作。

答案1

可以这样做:

for f in *; do touch "${f}_"; done

man bash/扩张说:

当参数是具有多于一位数字的位置参数时,或者当参数是后面跟着一个不应被解释为其名称一部分的字符

但是,这会touch调用每个文件,效率很低。更好的方法是让printf列出文件列表,以零分隔以防文件名奇怪,然后借助以下方法touch仅在需要时调用xargs

printf '%s_\0' * | xargs -0 touch

相关内容