我需要編寫一個腳本來讀取目錄中的所有文件名,然後根據文件名(例如,如果它包含R1或R2),它將連接所有文件名在名稱中包含例如R1。從Bash中的目錄讀取文件名
任何人都可以給我一些提示如何做到這一點?
我能夠做的唯一的事情就是:
#!/bin/bash
FILES="path to the files"
for f in $FILES
do
cat $f
done
,這隻能說明我這個變量文件是一個目錄不是它的文件。
我需要編寫一個腳本來讀取目錄中的所有文件名,然後根據文件名(例如,如果它包含R1或R2),它將連接所有文件名在名稱中包含例如R1。從Bash中的目錄讀取文件名
任何人都可以給我一些提示如何做到這一點?
我能夠做的唯一的事情就是:
#!/bin/bash
FILES="path to the files"
for f in $FILES
do
cat $f
done
,這隻能說明我這個變量文件是一個目錄不是它的文件。
要能解決問題的最小變化:
dir="path to the files"
for f in "$dir"/*; do
cat "$f"
done
要完成你形容爲你想要的最終目標:
shopt -s nullglob
dir="path to the files"
substrings=(R1 R2)
for substring in "${substrings[@]}"; do
cat /dev/null "$dir"/*"$substring"* >"${substring}.out"
done
注意cat
可以採取多個文件在一個調用 - - 事實上,如果你不這樣做,你通常不需要使用貓。
簡單的黑客:
LS -al R1 | awk'{print $ 9}'> outputfilenameR1
ls -al R2 | awk'{print $ 9}'> outputfilenameR2
如果您的文件名包含空格,'print $ 9'將只會選出第一部分。請參閱[爲什麼不應該解析'ls']的輸出(http://mywiki.wooledge.org/ParsingLs)中的其他警告。 –