pos*_*bie 0 ls bash awk text-processing command
我有如下文件列表:
\n[root@ods1 backup]# ls -l\ntotal 93892810\n-rw-r----- 1 root root 651248 Feb 17 08:34 abc_def_g_17-02-2022.sql\n-rw------- 1 root root 665248 Mar 23 08:46 bbc_23-03-2022.sql\n-rw-r----- 1 root root 676992 Apr 04 16:52 zz_b_04-04-2022.sql\nRun Code Online (Sandbox Code Playgroud)\n我需要实现的是:
\nabc_def_g\nbbc\nzz_b\nRun Code Online (Sandbox Code Playgroud)\n我尝试这样做,但没有成功:
\nls -l | awk '{print $9}' | cut -d '_' -f1-2\nRun Code Online (Sandbox Code Playgroud)\n我怎样才能实现这个目标?任何获取直到最后一个_字符的行的命令都可以完成这项工作。
\n编辑:此命令在 CentOS\xc2\xa08 中执行。
\n要不解析ls,您可以使用简单的loopandshell语法:
for f in *; do echo "${f%_*}"; done
Run Code Online (Sandbox Code Playgroud)
如果您需要进一步处理该列表(并且您有一个能够使用数组的 shell),您可以将项目添加到数组中:
tokens=()
for f in *; do tokens=("${tokens[@]}" "${f%_*}"); done
echo "${tokens[@]}"
Run Code Online (Sandbox Code Playgroud)
或者不使用循环,直接声明数组:
files=(*)
tokens=("${files[@]%_*}")
#or
for token in "${files[@]%_*}"; do echo "$token"; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2679 次 |
| 最近记录: |