Linux在单行上添加文本文件的文件名和路径

时间:2012-11-25 12:22:32

标签: linux shell

我正在尝试编写一个脚本,以便在一行中添加文件名和文本文件的目录路径。 E.g。

Filename /root/folder/folder/

我试过了:

ls "$1" >> /root/folder/folder/file.txt
pwd >> /root/folder/folder/file.txt

但它出现在单独的行上。

我确实尝试了

ls "$1" && pwd >> ...... 

但它只将pwd粘贴到文本文件中。

我是Linux新手所以非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

这个怎么样:

echo "$1 $(pwd)" >> outputfile

答案 1 :(得分:0)

使用:

p1=`ls $1`
p2=`pwd`
echo $p1 $p2 >> /root/folder/folder/file.txt

答案 2 :(得分:0)

尝试:

echo "$1$(pwd)" >> /root/folder/folder/file.txt

或者您可以使用连接字符串创建一个新变量,然后回显:

NewVar="$1$(pwd)"
echo "$NewVar" >> /root/folder/folder/file.txttxt

在上面的第一个示例中,每个命令都插入一个换行符。在第二个示例中,您拥有的&&分解了两个命令,以便不重定向第一个的输出。换句话说,您无法在&&之间分发重定向。

答案 3 :(得分:0)

一种常见的技巧是使用printf(或echo -n,但不太便于使用)以避免编写换行符:

exec >> /root/folder/folder/file.txt
printf "%s " "$1"
pwd

在您的示例中,您使用命令生成初始数据,在这种情况下,一种好的方法是使用tr修剪换行符

ls "$1" | tr -d '\012'
printf " "  # Insert a space
pwd