On 3/2/19 8:07 PM, Roberto C. Sánchez
wrote:
On Sat, Mar 02, 2019 at 07:56:58PM -0500, deb wrote:This has to be simple and I'm just missing it. If I pull a filename from a temp file into a variable, I can ls it fine. If I cut off the extension, and tack on my own SAME EXT, ls no longer works. (The actual script is more elaborate, loading vlc , etc -- but this summarizes & shows my issue) # mp4file.txt holds just 'long file with spaces.mp4' fname=$(<mp4file.txt) # echo $fname shows the right filename.mp4 string # works ls -al "$fname" # Cut off the extension. fname=`echo $fname | rev | cut -d. -f2 | rev` # echo $fname shows the filename sans '.mp4' # THIS LS FAILS, WITH FILE NOT FOUND (but actually reports the exact string that worked above, but not being found here). ls -al "$fname".mp4 ls: cannot access 'long file with spaces.mp4': No such file or directoryI cannot replicate the behavior you describe. Here is how it looks for me: root@chroot:~# touch "long file with spaces.mp4" root@chroot:~# echo "long file with spaces.mp4" >mp4file.txt root@chroot:~# cat mp4file.txt long file with spaces.mp4 root@chroot:~# ls -l total 4 -rw-r--r-- 1 root root 0 Mar 3 01:02 long file with spaces.mp4 -rw-r--r-- 1 root root 26 Mar 3 01:02 mp4file.txt root@chroot:~# fname=$(<mp4file.txt) root@chroot:~# ls -al "$fname" -rw-r--r-- 1 root root 0 Mar 3 01:02 long file with spaces.mp4 root@chroot:~# fname=`echo $fname | rev | cut -d. -f2 | rev` root@chroot:~# ls -al "$fname".mp4 -rw-r--r-- 1 root root 0 Mar 3 01:02 long file with spaces.mp4 What version of bash are you using?------------------------------------------------------ It is not: * a special character thing, * a carriage return thing, * a character case thing, * not helped with './' or '~/' added in front of the filename. * It's the same string in both spots. Any thoughts folks?I am not sure about the overall problem, but I can say I would replace this: fname=`echo $fname | rev | cut -d. -f2 | rev` with this: fname=$(basename "$fname" .mp4) Regards, -Roberto
Thank you Roberto.
# Cut off the extension. ^ this does work for the ls, but I do not know that it will be a .mp4.
(It could be a .mkv, .webm, .ogg, .mp4, etc.) What is certain is the filename to the left of the final '.'. So I was building up the different choices to file test for, hence the fname=`echo $fname | rev | cut -d. -f2 | rev`
I'm running: cat /etc/issue 9.8 bash --version GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
|