LinuxQuestions.org
Download your favorite Linux distribution at LQ ISO.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 09-30-2005, 10:36 AM   #1
antony.booth
LQ Newbie
 
Registered: Oct 2004
Location: UK
Distribution: Fedora
Posts: 23

Rep: Reputation: 15
filenames with spaces


I am trying to process a directory and determine attributes of each file. I am using a for x in $( ls ) loop to iterate through the directory, but files with spaces in the name populate ${x} for each word. E.G.

A simple script to list directories

for i in $( ls );
do
if [ -d "${i}" ]; then
echo ${i};
fi;
done

If I have a subdirectory called "This is a file" (without the quotes)

It will look for files: -

This
Is
A
File

which do not exist.

Anyone have any ideas how best to list the directory and just get the filenames individually?

Many Thanks.
 
Old 09-30-2005, 11:11 AM   #2
deiussum
Member
 
Registered: Aug 2003
Location: Santa Clara, CA
Distribution: Slackware
Posts: 895

Rep: Reputation: 31
Change the IFS variable like so. (For more info on this variable, try man bash and search for IFS)

Code:

IFS='
'

for i in $( ls -1 );
do
if [ -d "${i}" ]; then
echo ${i};
fi;
done
 
Old 09-30-2005, 11:11 AM   #3
anomie
Senior Member
 
Registered: Nov 2004
Location: Texas
Distribution: RHEL, Scientific Linux, Debian, Fedora, Lubuntu, FreeBSD
Posts: 3,930
Blog Entries: 5

Rep: Reputation: Disabled
Try
Code:
ls | awk '{ print }'
And find the person who is creating filenames with spaces in them - make him sit in the corner for awhile.
 
Old 09-30-2005, 09:04 PM   #4
koodoo
Member
 
Registered: Aug 2004
Location: a small village faraway in the mountains
Distribution: Fedora Core 1, Slackware 10.0 | 2.4.26 | custom 2.6.14.2, Slackware 10.2 | 11.0, Slackware64-13
Posts: 345

Rep: Reputation: 32
Check this out :
Code:
#!/bin/sh
for i in *;
do
if [ -d "$i" ]; then
echo "$i";
fi;
done
Hope this helps !


PS : Don't forget to put quotes around $i
 
Old 10-01-2005, 06:39 AM   #5
bigearsbilly
Senior Member
 
Registered: Mar 2004
Location: england
Distribution: FreeBSD, Debian, Mint, Puppy
Posts: 3,290

Rep: Reputation: 174Reputation: 174
koodoo wins

or:
Code:
ls | while read file;do
   echo $file
done
 
Old 11-01-2005, 04:49 AM   #6
RGummi
Member
 
Registered: Nov 2005
Posts: 90

Rep: Reputation: 15
I use the following

oldIfs=$IFS
IFS='
'
l=$(find $srcFolder -iname '*.jpg')
for jpgitem in $l; do
IFS=$oldIfs
# do what to do
# cp -v "$jpgitem" "$targetFolder
IFS='
'
done

RGummi

Last edited by RGummi; 11-01-2005 at 01:44 PM.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to use foreach on filenames with spaces? BrianK Linux - General 3 08-09-2005 12:15 PM
ls and filenames with spaces rose_bud4201 Programming 10 07-01-2005 08:28 AM
Spaces in filenames with BASH edenning Programming 12 01-27-2005 07:10 AM
filenames with spaces - explain t3___ Linux - Newbie 14 02-17-2004 06:13 PM
spaces in filenames ebone Linux - General 2 11-12-2001 11:56 AM


All times are GMT -5. The time now is 08:09 AM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration