如何使用管道将“ls -l”的输出发送到“cp”命令?

4

我希望将ls -l命令的输出复制到一个名为“xyz”的文件中。 我知道我需要获取ls -l的输出,然后使用管道将其发送到cp命令,即ls -l的输出将被用作cp命令的输入。

$ls-l

-rw-r--r-- 1 1030082 oinstall  167 Mar 27 10:36 \
-rw-r--r-- 1 1030082 oinstall  167 Mar 27 10:36 a1
-rw-r--r-- 1 1030082 oinstall  103 Mar 27 12:40 a2
-rw-r--r-- 1 1030082 oinstall   30 Mar 27 12:43 a3
-rw-r--r-- 1 1030082 oinstall   21 Mar 27 13:47 a4 
drwxr-xr-x 3 1030082 oinstall 4096 Mar 27 16:54 dir1
-rw-r--r-- 1 1030082 oinstall   94 Mar 27 13:53 unix
-rw-r--r-- 1 1030082 oinstall  105 Mar 27 10:33 xyz

2
cp 命令用于复制文件。只需使用输出重定向将输出放入文件中即可。 - Barmar
1
你不能将 ls -l 的输出作为 cp 的输入,因为 cp 对额外的信息(如模式、计数、日期等)无法识别。如果你只是需要复制目录中的所有文件,可以使用 cp * 并且只需使用标准通配符即可。 - Doon
3个回答

3

输出到文件"test.txt":

ls -l > text.txt

管道的概述:

  • > 将输出保存到文件中。

  • >> 追加输出到文件中。

  • < 从文件中读取输入。

  • 2> 重定向错误消息。

  • | 将一个程序的输出发送作为另一个程序的输入。


1
如果您想将目录列表中获取的文件复制到其他目录中,则应按如下方式进行。
for i in $(ls -al  | awk ' { print $9} ' ); do cp -rf $i $destination ; done;

如果你只是想将ls -al的输出复制到某个文件中,那么执行以下操作
ls -al > file

1

如果您正在查找文件详细信息(时间、权限等等...)

cp `ls -l | grep "xxx" | awk '{print $9}'` path_to_your_dest_directory

只需将xxx替换为您要查找的内容和目标路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接