繁体   English   中英

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

[英]How to delete specific prefix from directory name by shell script

我直接创建了几个,如下所示

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

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

users
cars
roles
... other 8 directories.

我怎样才能做到这一点?

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

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

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

所以,我认为你想删除前缀“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

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

您说过要将这些目录复制到另一个父目录。 cp命令支持定义目标文件名:

cp -r admin_users /path/to/admin/users

您可以为此编写一个循环。 对于“删除前缀”部分,说f是循环中的变量:

kent$  echo $f
admin_users
kent$  echo "/path/to/admin/${f##admin_}"
/path/to/admin/users

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM