People,
This line correctly finds one MP3 but misses two FLACs:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
Adding extra escapes fixes the problem:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
. . but why is there only a problem with the "flac" OR? - all three files have at least one space in the filename:
01_Early Morning.mp3 02 Om.flac 01 Om Namaha Shivaya.flac
Thanks,
Phil. -- Philip Rhoades
PO Box 896 Cowra NSW 2794 Australia E-mail: phil@pricom.com.au
On 02/20/2016 04:05 PM, Philip Rhoades wrote:
. . but why is there only a problem with the "flac" OR? - all three files have at least one space in the filename:
Your mistake seems to be believing that the shell can understand the way you're nesting quotes. It can't. Each unescaped quote you're using simply terminates the quoted string that preceded it. So your example:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
There are the following quoted strings:
"find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name " " -o -name " " -o -name " " \)"
This means two things: First, the wildcards are unquoted when the command is run on the remote system. Second, the wildcards are also unquoted on the local system. So, if there are any mp3, m4a, or flac files in the directory where you run that command, or in the default login directory on the remote system, the wildcard will be expanded and find will only search for files with that specific name.
Instead, use single quotes around the entire command, or escape both the quotes and the wildcards.
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
ssh localhost 'find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f ( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" )'
On 02/20/2016 04:05 PM, Philip Rhoades wrote:
People,
This line correctly finds one MP3 but misses two FLACs:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
Adding extra escapes fixes the problem:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
. . but why is there only a problem with the "flac" OR? - all three files have at least one space in the filename:
01_Early Morning.mp3 02 Om.flac 01 Om Namaha Shivaya.flac
Thanks,
Phil.
Philip Rhoades
PO Box 896 Cowra NSW 2794 Australia E-mail: phil@pricom.com.au
I usually resort to running "detox" on the file. Try >man detox.
Regards
John
On 02/20/2016 05:05 PM, Philip Rhoades wrote:
People,
This line correctly finds one MP3 but misses two FLACs:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
Adding extra escapes fixes the problem:
ssh localhost "find /home/phil/music/ambient/RobertGass+OnWingsOfSong/OmNamahaShivaya -maxdepth 1 -type f \( -name "*.mp3" -o -name "*.m4a" -o -name "*.flac" \)"
. . but why is there only a problem with the "flac" OR? - all three files have at least one space in the filename:
01_Early Morning.mp3 02 Om.flac 01 Om Namaha Shivaya.flac
Thanks,
Phil.
What I do is:
find <some dir> -name *.mp3 -o -name *.flac -o -name *.mp4
and I get ALL the files with those extensions listed.
Notice: No quotes!!!