请耐心等待我,因为我对shell脚本和awk非常陌生。我一直在尝试创建播放列表以在Mplayer中播放我的一些音乐,但只有在指定了每个文件的完整路径时它才有效。我一直在尝试设置一个小shell脚本,在每个文件名之前插入$ pwd的输出并将其写入播放列表,如下所示:
ls | awk '{system("pwd") | getline x; grep -v 0; gsub("\n",""); print x"/"$1}' > playlist.txt
(grep是摆脱系统的" 0"状态输出(" pwd"))。但是,x中有换行符,所以我得到了输出
/home/(directory)
/Song_1.mp3
/home/(directory)
/Song_2.mp3
我想要的是
/home/(directory)/Song_1.mp3
/home/(directory)/Song_2.mp3
答案 0 :(得分:1)
您可以像这样使用printf
:
printf "%s\n" "$PWD"/*
或者你的awk:
printf "%s\n" * | awk 'BEGIN{"pwd"|getline d} {print d "/" $0}'
答案 1 :(得分:0)
你是想尝试这样做吗?
ls -1 ${PWD}/*.mp3
或
find "${PWD}" -maxdepth 1 -name "*.mp3" -print
或
for f in ${PWD}/*.mp3
do
echo "${f}"
done
答案 2 :(得分:0)
您也可以
find $(pwd) -maxdepth 1
答案 3 :(得分:0)
不使用awk或其他任何东西,但我认为这可以做你想要的吗?
find -printf "\"$PWD/%f\"\n"
答案 4 :(得分:0)
正如其他人所回答的那样,还有其他方法可以获得 OP 中要求的完全限定路径。
对于那些将 awk 用于其他目的并需要工作目录的人,awk 可以通过 ENVIRON
数组访问环境变量。您可以通过 ENVIRON["PWD"]
访问它。
该目录是完全限定的,因此请求的 /home/(directory)/filename.mp3
可能无法按预期工作。即便如此,一个应该为 OP 目的工作的单行:
ls -1 | awk '{ print(ENVIRON["PWD"] "/" $0); }' > playlist.txt