如何在Unix和Linux中的单个命令中管道多个命令

时间:2012-12-04 09:30:02

标签: linux unix

我希望o / p作为所有者列表及其文件名,文件路径和文件大小。 我使用两个命令来获得o / p。任何人都可以建议我如何在一个命令中获得o / p。我使用的命令是:

ls -l | awk '{print $3, $4 }' > test.txt 

这给了我所有者和目录的列表。

第二个是:

find . -size +100k -print0 | xargs -0 ls -sd >tets2.txt

这为我提供了文件的文件名和大小。

2 个答案:

答案 0 :(得分:0)

有些不明白,你的意思是管它们两个或每个命令在同一行。要做到以后,你可以做

ls -l | awk '{print $3, $4 }' > test.txt    ;   find . -size +100k -print0 | xargs -0 ls -sd >tets2.txt

答案 1 :(得分:0)

第一个命令返回所有者和组,而不是文件名。它仅适用于当前目录。第二个命令也适用于子目录,但仅适用于大型文件。两个不相关的命令难以粘合在一起,但如果您的目标是阻止对文件调用stat两次,则可以修改以下Perl脚本以满足您的需求:

use feature 'say';
while (my $file = glob '*') {
    my @stats = (stat $file)[4,5,7];
    say join "\t", $file,
                   (getpwuid $stats[0])[0],
                   (getgrgid $stats[1])[0],
                   $stats[2];
}