Questions about windows support
Juan Manuel Cabo
juanmanuel.cabo at gmail.com
Mon Feb 20 19:44:37 PST 2012
I think that the "for x in *" still gets you on the limit (not sure).
This is how you deal with spaces in filenames or '-'
find -print0 | xargs -0 rm
Another funny unix thing is awk... it solves all your problems but
in one line, but then creates new ones until you get them right
for separators and special cases.
On 02/21/2012 12:31 AM, H. S. Teoh wrote:
> On Tue, Feb 21, 2012 at 04:24:44AM +0100, Adam D. Ruppe wrote:
>> On Tuesday, 21 February 2012 at 03:13:10 UTC, H. S. Teoh wrote:
>>> for x in *; mv $x dest/$x; done
>>> Easy. :)
>> And wrong!
>> What if the filename has a space in it? You can say "$x", with quotes,
>> to handle that.
> Argh, you're right. That's one reason I *hate* the implicit
> interpolation that shells have the tendency to do. Perl got it right: $x
> means the value of x as a *single* value, no secret additional
> interpolation, no multiple layers of re-interpretation, and that
>> But, worse yet... a leading dash? Another downside with the shell
>> expansion is the program can't tell if that is an expanded filename or
>> a user option.
> Heh. Never thought of this before. I can see some fun times to be had
> with it, though!
> But you could probably handle it by:
> mv -- "$x" "$dest/$x"
>> In this case, the mv simply wouldn't work, but you can get some
>> bizarre behavior out of that if you wanted to play with it.
>> try this some day as a joke:
>> $ mkdir evil-unix # toy directory
>> $ cd evil-unix
>> $ touch -- -l # our lol file
>> $ touch cool # just to put a file in there
>> $ ls
>> -l cool
>> $ ls * # the lol file is interpreted as an option!
>> -rw-r--r-- 1 me users 0 2012-02-20 22:18 cool
>> imagine the poor newb trying to understand that!
> +1, LOL.
More information about the Digitalmars-d