Questions about windows support

Juan Manuel Cabo juanmanuel.cabo at gmail.com
Mon Feb 20 19:52:36 PST 2012


WARNING: for anyone reading dont try this without thinking: !!!!

>    find -print0 | xargs -0 rm

Please don't type it as is (that deletes files without problems
with spaces or '-', but will delete everything).

The -print0 is very useful. I use for instance to see the latest file
in a tree of directories:

     find -type f -print0 | xargs -0 ls -ltr

which comes up at the bottom of the listing.

--jm




On 02/21/2012 12:44 AM, Juan Manuel Cabo wrote:
> 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.
> 
> --jm
> 
> 
> 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
>> nonsense.
>>
>>
>>> 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.
>>
>>
>> T
>>
> 



More information about the Digitalmars-d mailing list