Mv
如何為 bash 命令每行讀取多個參數?
我有一個格式為的文件(ordered_names)
pub 000.html pub.19 001.html
大約 300 行,我找不到將其提供給 mv 命令的方法。
我已閱讀將儲存在文件中的字元串作為命令的參數列表提供?,但我無法得到我的目的。
以下是我所做的一些嘗試:
for line in "$(cat ../ordered_files.reversed)"; do mv $(echo "$line"); done for line in "$(cat ../ordered_files.reversed)"; do echo mv $(echo $line | cut -d' ' -f 1) $(echo $line | cut -d' ' -f 2) ; done
嘗試:
while read -r file1 file2; do mv -n -- "$file1" "$file2"; done <inputfile
這假定輸入文件中每一行的文件名是用空格分隔的。當然,這僅適用於文件名本身不包含空格的情況。如果他們這樣做,那麼您需要不同的輸入格式。
這個怎麼運作
while read -r file1 file2; do
這開始了一個
while
循環。只要輸入可用,循環就會繼續。對於每一行輸入,讀取兩個參數:file1
和file2
。
mv -n -- "$file1" "$file2"
這移動
file1
到file2
。該選項
-n
可防止您覆蓋目標位置的任何文件。當然,如果您打算覆蓋文件,請刪除此選項。該字元串
--
表示選項的結束。如果任何文件名以-
.
done
這標誌著
while
循環的結束。
<inputfile
這告訴
while
循環從名為inputfile
.