如何在目录中打印第一个和最后一个文件名的前四个字符

时间:2015-05-22 22:50:53

标签: linux shell unix

目录中有很多文件。我想在该目录中打印前四个文件名的前四个字符。假设文件位于

目录中
test101.dat
test102.dat
......
......
xyzt409.dat
yreh302.dat

所以我的输出将是:test和yrch

我尝试了以下但是没有给出结果。

$directory=/xyx
h1=$(echo ls -l < $directory | head |awk '{print substr( $0,1,4)}')
t1=$(echo ls -l < $directory | tail |awk '{print substr( $0,1,4)}')
echo $h1 " " $t1

3 个答案:

答案 0 :(得分:1)

数据:

$ /bin/ls -1
client.py
data.txt
server.py
shittest.py

强制性的Python解决方案只需调用ls -1一次就足够了:

$ /bin/ls -1 | python -c "import sys;l=sys.stdin.readlines();print l[0][:4];print l[-1][:4]"
clie
shit

答案 1 :(得分:1)

你不需要所有这些复杂性。使用这个简单的BASH脚本:

figure:nth-child(8) {
    animation: xfade 48s 0s infinite;
    -webkit-animation: xfade 48s 0s infinite;
}

@-webkit-keyframes xfade{
  0%{
    opacity: 1;
  }
  10.5% {
    opacity: 1;
  }
  12.5%{
    opacity: 0;
  }
  98% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes xfade{
  0%{
    opacity: 1;
  }
  10.5% {
    opacity: 1;
  }
  12.5%{
    opacity: 0;
  }
  98% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

答案 2 :(得分:0)

试试这个

$directory=/xyx
h1=$(echo ls -l < $directory | head -1 |awk '{print substr( $0,1,4)}')
t1=$(echo ls -l < $directory | tail -1 |awk '{print substr( $0,1,4)}')
echo $h1 " " $t1