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
当参数是具有多于一位数字的位置参数时,或者当参数是后面跟着一个不应被解释为其名称一部分的字符。
但是,这会touch
调用每个文件,效率很低。更好的方法是让printf
列出文件列表,以零分隔以防文件名奇怪,然后借助以下方法touch
仅在需要时调用xargs
:
printf '%s_\0' * | xargs -0 touch