我有一个包含6个目录的目录:
动物
cat
cow
dog
a
b
donkey
monkey
zebra
我想通过他们的排名在bash文件中解决它们(当目录按字母排序时,每个都有排名)
所以例如我想复制第三个目录,即狗。 我不想提到名字狗,我想把它称为动物文件夹中的第三个目录。 所以例如cp -r home / animal /"第三个目录" ..
有什么想法吗?
答案 0 :(得分:2)
我建议用目录名填充一个数组:
cd /home/animal
animal=(foobar *)
cd -
cp -r "/home/animal/${animal[3]}" "target"
答案 1 :(得分:2)
您可以使用GNU find和GNU sort来创建数组。
在4.4之前的bash中使用while read循环
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"