如何通过排名来解决目录和文件

时间:2017-06-19 11:18:12

标签: bash directory

我有一个包含6个目录的目录:

动物

   cat
   cow
   dog 
       a
       b
   donkey
   monkey
   zebra

我想通过他们的排名在bash文件中解决它们(当目录按字母排序时,每个都有排名)

所以例如我想复制第三个目录,即狗。 我不想提到名字狗,我想把它称为动物文件夹中的第三个目录。 所以例如cp -r home / animal /"第三个目录" ..

有什么想法吗?

2 个答案:

答案 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"