在 Linux 中將 xargs 與 mv 和 mkdir 指令一起使用

在 Linux 中將 xargs 與 mv 和 mkdir 指令一起使用

我正在嘗試使用命令建立目錄mkdir。但是,我想將文件子集移動到該目錄中。我明白我可以使用參數,但是我的嘗試失敗了。例如,我已經嘗試過mkdir test | xargs -i mv test.text {}。它會建立目錄,但test.txt建立後不會將檔案移到其中。

答案1

mkdir不輸出任何內容,因此xargs不會做任何有用的事情。我不太明白你到底想做什麼,所以你應該要更好地解釋你的問題。

「想要將檔案子集移到該目錄」-> 該子集中的檔案是否共用一個或多個特徵?如果是,請使用尋找像這樣的命令:

find [conditions] -exec mv "{}" dirname \;

如果您想避免輸入兩次目錄名稱,或者如果您是透過腳本執行此操作,則可以執行類似的操作

dirname=test
mkdir $dirname && mv filename $dirname

答案2

我認為 mkdir 不會產生任何輸出來透過管道傳輸到 xargs。

執行“mkdir test1 test2 testhello3 | grep hello”不會產生任何輸出,而執行“ls | grep hello”將顯示“testhello3”。

您可以先生成資料夾,然後使用 ls、grep、xargs 來執行此操作嗎?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

也許有關移動文件標準等的更多資訊會有所幫助。

答案3

我的猜測,接近使用者49740的答案:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

您想要建立多少個不同的目錄?

相關內容