我想遍历一个目录,对于每个不是目录的文件,我想将名称附加在一起并用逗号分隔它们。
files=""
for f in $(ls ~/Downloads | grep -v ^d)
do
files+="$f"","
done
echo "$files"
Run Code Online (Sandbox Code Playgroud)
这里的下载文件夹有这样的文件
这 : 01 - Agar Mujhse Mohabbat Hai - www.downloadming.com.mp3
预期输出:01 - Agar Mujhse Mohabbat Hai - www.downloadming.com.mp3
实际输出:01,-,Agar,Mujhse,Mohabbat,Hai,-,www.downloadming.com.mp3
欢迎所有解决方案。
gle*_*man 13
files=()
cd ~/Downloads
for file in *; do
[[ -d $file ]] && continue
files+=( "$file" )
done
printf "%s\n" "${files[@]}"
comma_separated=$(IFS=,; echo "${files[*]}")
echo "$comma_separated"
Run Code Online (Sandbox Code Playgroud)
如您所见,for f in $(ls)
迭代输出中的单词,而不是lines。ls
当您希望人眼看到文件时保存,并在您希望脚本对文件名执行某些操作时使用 shell 文件名模式。