Answers:
因为basename命令是在管道运行之前运行的。为了使这项工作有效,您需要xargs来执行basename,并且可以使用来实现sh -c
,例如:
ls *.sh | xargs -L1 sh -c 'basename $1 .sh' dummy
笔记:
xargs
在何处插入文件名,它们将被添加到命令行末尾。-L1
开关或等效开关,因此xargs
只能将一个参数传递给sh
。ls
可能会产生不良影响。删除了不推荐使用的选项,谢谢TechZilla
rename
,例如:rename 's/\.sh//' *.sh
。首先尝试空运行(-n
)。
rename
确实很好用,也很简单,但是请记住它是特定于发行版的。基于RHEL和Debian的发行版提供了不同的rename
命令,因此在创建跨发行版脚本时必须牢记这一点。
-i
选项是默认选项,但是那些“经典”选项已被弃用。例如,仅使用一个选项/行,新的POSIX手册页推荐使用-L1
。要调用的旧行为-i
,页面建议使用该-I'{}'
选项。