解決的目錄和文件,我有一個包含6目錄的目錄:如何通過他們的排名
動物
cat
cow
dog
a
b
donkey
monkey
zebra
我希望通過自己的排名(以解決他們在bash文件時的目錄進行排序每個人都有一個等級)
因此,例如,我想複製第三個目錄是狗。 我不想提及名字狗,我想把它稱爲動物文件夾中的第三個目錄。 所以例如cp -r home/animal /「第三目錄」..
任何想法?
解決的目錄和文件,我有一個包含6目錄的目錄:如何通過他們的排名
動物
cat
cow
dog
a
b
donkey
monkey
zebra
我希望通過自己的排名(以解決他們在bash文件時的目錄進行排序每個人都有一個等級)
因此,例如,我想複製第三個目錄是狗。 我不想提及名字狗,我想把它稱爲動物文件夾中的第三個目錄。 所以例如cp -r home/animal /「第三目錄」..
任何想法?
您可以使用GNU查找和排序GNU創建數組。
在bash 4.4之前使用,而讀循環
while IFS= read -d '' file; do
Animal+=("$file")
done < <(find . -type d -print0 | LC_ALL=C sort -z)
cp -r "/home/animal/${Animal[3]}" "target"
,或者如果你有bash的4.4,你可以跳過循環和readarray使用
IFS= readarray -d '' Animal < <(find . -type d -print0 | LC_ALL=C sort -z)
cp -r "/home/animal/${Animal[3]}" "target"
我建議填充數組與目錄名稱:
cd /home/animal
animal=(foobar *)
cd -
cp -r "/home/animal/${animal[3]}" "target"
可能是值得一提的'foobar'作爲反正從一個開始實際計數:)不錯的一個反正。 – sjsam
但是,目前還不清楚操作系統是否期望按字節順序排序。爲什麼不'LC_ALL = en_US'例如。 – sjsam
@sjsam沒有指定它應該如何排序,所以只需選擇'C',因爲它是最簡單,最安全的語言環境。 OP可以根據他們希望如何分類來輕鬆改變。 – 123
它的工作原理,謝謝! 爲我的項目我需要打開一個目錄(例如a/b /)使用此方法,然後在該目錄(b)中,使用此方法打開另一個目錄(a/b/c /),但是當我重複這個腳本,它錯過了行爲,任何想法? while IFS = read -d''file;執行 然後IFS = read - 執行 cd = pwd'/$ {a [2]} 完成<(查找。 d'檔案;做 b + =(「$ file」) done <(find。-type d -print0 | LC_ALL = C sort -z) cd'pwd'/$ {b [1]} –