只保存一串多字符串命令输出

时间:2017-09-24 15:09:34

标签: linux bash shell unix gnome-terminal

我有一个bash命令来查找子目录中的最大文件。我想将输出保存到变量中以与其他命令一起使用。

bigile=$(find /path/to/directory -type f -exec du -Sh {} + | sort -rh | head -n 1)

不幸的是,这样可以节省文件大小和文件路径。

echo $file
216K /path/to/directory/bigfile

如果我将变量传递给命令将文件作为输入,我会看到一个错误:

wc -lm $file
wc: cannot access '216K': No such file or directory
6333 217649 /home/path/to/directory/bigfile

显然,我得到了我需要的输出,但我不想要错误信息。如何只保存find命令输出的第一个字符串?

感谢!!!

3 个答案:

答案 0 :(得分:2)

请您试着跟随并告诉我这是否对您有帮助。

bigile=$(find /path/to/directory -type f -exec du -Sh {} + | sort -rh | awk 'FNR==1{print $2}')

说明:在awk命令之后简单地添加sort并且FNR==1条件将确保仅第一行被拾取然后打印第二行该行的领域也是如此。

答案 1 :(得分:1)

您还可以从扩展中删除前导文件大小:

echo "${file#* }"

答案 2 :(得分:0)

在bash中有很多方法可以做到这一点(sed,awk,substring removal。试试这个:

func supportedInterfaceOrientations() -> UIInterfaceOrientationMask{
return UIInterfaceOrientationMask(rawValue:(UIInterfaceOrientationMask.portrait.rawValue | UIInterfaceOrientationMask.landscape.rawValue))}

为您的命令添加了self.heigth_和引号self.height_。也适用于包含空格或制表符的文件名。