簡體   English   中英

bk腳本中帶有sed的mkdir

[英]mkdir with sed in bash script

我想創建目錄,其名稱應與父目錄中的壓縮文件列表相對應。 另外,我想擺脫目錄擴展名中的文件擴展名。

例如archive01.gz應導致名稱為archive01的目錄

到目前為止,我的腳本是:

#!/bin/bash
for file in *.gz; do
    echo $file | sed 's/.gz//' | mkdir
done

錯誤消息是:

mkdir: missing operand

然而,

echo $file | sed 's/.gz//'

導致目錄名稱正確。 如何將其通過管道傳輸到mkdir?

更好的方法是使用參數替換而不是管道/子外殼:

#!/bin/bash
for file in *.gz; do
    mkdir ${file%.gz}
done

嘗試這個,

#!/bin/bash
for file in *.gz; do
    echo "$file" | sed 's/\.gz//' | xargs mkdir
done

mkdir不適用於管道。 請嘗試以下操作:

mkdir `echo $file | sed 's/.gz//'`

`會求值,然后將其替換為答案。 這稱為命令替換,也可以寫成:

mkdir $(echo $file | sed 's/.gz//')

您可以使用命令替換作為

#!/bin/bash
for file in *.gz; do
     mkdir $(echo $file | sed 's/.gz//')
done

要么

#!/bin/bash
for file in *.gz; do
     mkdir `echo $file | sed 's/.gz//'`
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM