如何通过Shell脚本从目录名称中删除特定前缀

时间:2019-11-20 09:47:12

标签: linux shell

我直接创建了以下几条

admin_users/
admin_cars/
admin_roles/
admin_.../
... other 8 directories.

现在,我想移动这些文件到管理目录,并删除后缀。

users
cars
roles
... other 8 directories.

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用[p]rename(在大多数系统上可用):

rename 's/_/\//' admin_*/

admin_*/扩展到名称以admin_开头的目录,而s/_/\//用斜杠替换第一个下划线。

答案 1 :(得分:1)

所以,我认为您想删除前缀“ admin”吗? 如果您确定将使用目录名,则可以手动创建目录admin。

之后,

  
      
  • 您可以循环浏览当前目录(前提是您从相关目录中运行脚本)
  •   
  • 找到所有目录
  •   
  • 在下划线后提取部分
  •   
  • 使用它重命名并移至admin目录。
  •   

与此类似的东西-

#!/bin/bash

for file in `ls -l | grep "^d" | awk '{print $9}'`; do
    suff=`echo $file | cut -d '_' -f 2`
    echo $suff
    mv $file admin/$suff
done

答案 2 :(得分:1)

  

现在,我想复制这些文件到管理目录,并删除后缀。

您说过要复制这些目录到另一个父目录。 Filtergraph 'fps=25,format=yuv420p' was specified through the -vf/-af/-filter option for output stream 0:0, which is fed from a complex filtergraph. -vf/-af/-filter and -filter_complex cannot be used together for the same stream.命令支持定义目标文件名:

cp

您可以为此编写一个循环。对于“删除前缀”部分,假设cp -r admin_users /path/to/admin/users 是循环中的变量:

f
相关问题