linux - Bash 脚本在 IF 之后不按文件类型排序

标签 linux bash scripting

伙计们,我需要一些帮助。我有一个 bash 代码

#!/bin/bash
echo "Iveskite kataloga, kurio analize norite atlikti"
read katalogas
failai=$(find -x $katalogas)
for failas in $failai
do
  if [[ -d "$failas" ]]
  then 
    echo $failas " yra direktorija "
  else
    if [[ -x "$failas" ]]
    then
      echo $failas " yra vykdomasis failas "
    else
      if [[ -f "$failas" ]]
      then
        echo $failas " yra paprastasis failas "
      fi
    fi
  fi
done

我想让最终结果按文件类型排序。我这样做:failai=$(find -x $katalogas) 但它似乎不起作用。

最佳答案

一个解决方案意味着您保持脚本基本不变:

#!/bin/bash
echo "Iveskite kataloga, kurio analize norite atlikti"
read katalogas
failai=$(find -x $katalogas)
typeD=fileslist1
typeX=filelist2
typeF=filelist3
> $typeD
> $typeX
> $typeF
for failas in $failai
do
  if [[ -d "$failas" ]]
  then 
    echo $failas " yra direktorija " >> $typeD
  else
    if [[ -x "$failas" ]]
    then
      echo $failas " yra vykdomasis failas " >> $typeX
    else
      if [[ -f "$failas" ]]
      then
        echo $failas " yra paprastasis failas " >> $typeF
      fi
    fi
  fi
done
cat $typeD $typeX $typeF

或者,为了避免写入文件和使用“排序”,您需要相应地向输出添加排序键,即更改“D:”、“X:”和“F:”以将顺序固定为要求:

#!/bin/bash
echo "Iveskite kataloga, kurio analize norite atlikti"
read katalogas
failai=$(find -x $katalogas)

for failas in $failai
do
  if [[ -d "$failas" ]]
  then 
    echo "A: $failas  yra direktorija "
  else
    if [[ -x "$failas" ]]
    then
      echo "X: $failas yra vykdomasis failas "
    else
      if [[ -f "$failas" ]]
      then
        echo "F: $failas yra paprastasis failas "
      fi
    fi
  fi
done | sort

您可以选择在“排序”之后添加一个“| cut -d':' -f2-”以删除排序键。

关于linux - Bash 脚本在 IF 之后不按文件类型排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30141624/

相关文章:

linux - 了解 bash 大括号扩展

linux - 使用 awk 调用函数和命令

linux - Linux bash 脚本中的 Perl 脚本

c++ - 为研究人员简化算法测试。

powershell - 将 PowerShell 变量作为 cmdlet 参数传递

linux - 如何在 linux 中增加 QT Gui 线程优先级

python - SSH 在短时间后超时的选项? ClientAlive 和 ConnectTimeout 似乎没有做我需要他们做的事情

linux - 用不同的加权百分比计算成绩并在 bash 中输出最终成绩

linux - 使用终端显示图像而不会失去焦点

linux - 使用 Telnet 连接到 Linux Prompt