簡體   English   中英

對大括號在 shell 中如何工作的誤解

[英]Misunderstanding in how curly braces work in shell

我在這里有一點誤解。 所以,我執行這些命令:

mkdir Week\ {1..13}
touch {1..13}.txt

mv {1..13}.txt Week\ {1..13}

我的意圖是將 1.txt 移至第 1 周,將 2.txt 移至第 2 周,依此類推,但所有文件最終都位於“第 13 周”目錄中,我無法弄清楚它是如何工作的。 如果可能的話,誰能給我解釋一下?

花括號在“大括號擴展”中擴展(參見man bash )。 所以你的最后一行擴展到

 mv 1.txt 2.txt 3.txt ... 13.txt Week\ 1 Week\ 2 ... Week\ 13

如果你查看man mv ,你會看到

 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...

它沒有列出類似的東西

mv [OPTION] SOURCE1 DEST1 SOURCE2 DEST2

您可以使用循環將文件分發到目錄中:

for n in {1..13} ; do
    mv "$n".txt "Week $n"
done

如果您沒有對文件做任何其他事情而是創建它們,實際上您可以直接在循環中創建它們,因此您最初不需要在同一目錄中創建它們:

for n in {1..13} ; do
    mkdir "Week $n"
    touch "Week $n/$n.txt"
done

暫無
暫無

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

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