簡體   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