Sponsored Content
The Lounge What is on Your Mind? Filenames with hyphens - UNIX style? Post 302639173 by jlliagre on Friday 11th of May 2012 09:39:44 AM
Old 05-11-2012
Unix is very permissive in what it accepts but quite restrictive in what it recommends. Your first reply seemed to imply Windows was too permissive while Unix wasn't. The reality is the opposite. Windows has more restrictions and peculiarities like refusing a file to be named null.h or com0.c, having a colon in its name, having a space as its last character and so on, not to mention the way it preserve case but doesn't allow files with the same name but different cases to stay in the same directory.

In any case, your example obviously violates the POSIX recommendations but is still a valid Unix filename. It is obviously unacceptable to Windows and possibly other OSes and defeat non rock-solid scripts.

If your backup software has issues processing this filename, that's a bug or a limitation of the storage format it uses, the OS or the file system. The venerable tar utility has no issues handling it:
Code:
$ touch 'C:\March report - with summary figures'
$ tar cvf foo.tar *es
a C:\March report - with summary figures 0K
a files 8388K
$ tar tvf foo.tar
-rw-r--r-- 60004/60004      0 May 11 17:14 2012 C:\March report - with summary figures
-rw-r--r--   0/0   8589076 Nov  9 16:07 2011 files
$ mkdir extract
$ cd extract
$ tar xvf ../foo.tar
x C:\March report - with summary figures, 0 bytes, 0 tape blocks
x files, 8589076 bytes, 16776 tape blocks
$ ls -l
total 2
-rw-r--r--   1 jlliagre jlliagre       0 May 11 17:14 C:\March report - with summary figures
-rw-r--r--   1 jlliagre jlliagre 8589076 Nov  9  2011 files

About your last request, here are the numbers I got:
  • 0.74% have colons (1242)
  • 0.00% hashes (2 files out of 168522)

Last edited by jlliagre; 05-11-2012 at 10:57 AM..
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Unix History Question: Why are filenames/dirnames case sentsitive in Unix?

I tried looking for the answer online and came up with only a few semi-answers as to why file and directory names are case sensitive in Unix. Right off the bat, I'll say this doesn't bother me. But I run into tons of Windows and OpenVMS admins in my day job who go batty when they have to deal... (3 Replies)
Discussion started by: deckard
3 Replies

2. Shell Programming and Scripting

Unix filenames and spaces

I have files on my unix boxes that users have created with spaces. Example: /tmp/project plan ls -l "/tmp/project plan" works fine. $/tmp>ls -l "/tmp/project plan" -rw-r--r-- 1 root other 0 Jan 31 12:32 /tmp/project plan I created a file called test and put just the... (2 Replies)
Discussion started by: x96riley3
2 Replies

3. Shell Programming and Scripting

[Unix] a dos style rename wont work

Hey guys i'm creating a dos style rename script, so if a user types say q14.* as the 1st param and b14.* as the 2nd and will rename all q14 files to b14 but keep the extensions, so i've developed nearly the full script "i think", if i use echo(echo "if $1 had been renamed it would now be... (3 Replies)
Discussion started by: fblade1987
3 Replies

4. What is on Your Mind?

Looking for a "Motivational Poster" Style unix command?

I am trying to figure out a sort of Motivational line that I could write as a short unix command... I don't know too much but something like Get everything you want in life sudo (get everything) (you want?) (life directory) Any ideas? Thank You very much Brad (4 Replies)
Discussion started by: ridesurf
4 Replies

5. Shell Programming and Scripting

Renaming mutiple files with hyphens in name

I have searched throught a host of threads to figure out how to rename mutiple files at once using a script. I need to convert 200+ files from: fKITLS_120605-0002-00001-000001.hdr to eStroop_001.hdr fKITLS_120605-0002-00002-000002.hdr to eStroop_002.hdr and so forth.... What is... (5 Replies)
Discussion started by: akenne3
5 Replies

6. Shell Programming and Scripting

Using grep with hyphens

This is on a RHEL 6 box with bash 4.1.2 I'm trying to to use grep to only find those lines containing matches that form whole words. The -w option works fantastic unless of course that word has a hyphen. The problem is I will get a hit on "test-group" which is a good thing, but I will also... (3 Replies)
Discussion started by: woodson2
3 Replies

7. Shell Programming and Scripting

Appending date to UNIX Filenames

Hello, I have a file name in the below format and have to append the date as _$currdate. kchik_UK_lo.txt_$currdate. The above should be the format and I dont want to put entire filename as above in the code, but it should give me the output as the above filename.Can anyone please help... (7 Replies)
Discussion started by: harika03
7 Replies

8. Shell Programming and Scripting

Script in Perl or awk to remove multiple hyphens

Dear all, I have a database of compound words. I want to retain only strings with a single hyphen and identify those strings which have more than one hyphen. I am giving an example below test-test test-test-test test-test-test-test-test good-for-nothing The regex/script should remove all... (11 Replies)
Discussion started by: gimley
11 Replies

9. What is on Your Mind?

Coding Style at UNIX.com forums

Hi, as I mentioned in this thread(https://www.unix.com/shell-programming-and-scripting/280737-awk-function-return-permutations-n-items-out-m.html), a helpful coding style may improve overall value and support for people who come here and want to learn things the participants from unix.com have... (2 Replies)
Discussion started by: stomp
2 Replies
mren(1) 						      General Commands Manual							   mren(1)

NAME
mren - mtools utility to rename an existing DOS file SYNOPSIS
mren [-v] sourcefile targetfile OPTIONS
Specifies verbose mode. The new file name is displayed if the name supplied is invalid. DESCRIPTION
The mren command renames an existing file on a DOS file system. You can also use the mren command to rename directories. Reasonable care is taken to create a valid DOS file name. If an invalid DOS targetname is specified, the mren command changes the name and, if the -v option is specified, prompts the user to accept or reject the new name. The path component of the targetfile argument, if supplied, is ignored. That is, you cannot use the mren command to move a file from one subdirectory to another. DOS subdirectory names that contain the '/' or '' separator are supported. If you use the '' separator or wildcards, you must enclose file names in quotes to protect them from the shell. The mcd command can be used to establish the device and the current working directory (relative to DOS), otherwise the default is A:. Not all UNIX file names are supported in the DOS world. The mren command may have to change UNIX names to fit the DOS file name conven- tions. The following table shows some examples of file name conversions: ----------------------------------------------- UNIX name DOS name Reason for the change ----------------------------------------------- thisisatest THISISAT file name too long file.stuff FILE.STU extension too long prn.txt XRN.TXT PRN is a device name .abc X.ABC null file name hot+cold HOTXCOLD illegal character ----------------------------------------------- RESTRICTIONS
You cannot use the mren command to move a file from one subdirectory to another. EXIT STATUS
The following exit values are returned: Success. Failure. ENVIRONMENT VARIABLES
The following environment variables affect the execution of mren: If set, this variable names the file that contains the name of the cur- rent mtools working directory as established by the mcd command. If this variable is not set, the file $HOME/.mcwd is used. FILES
Contains the name of the current mtools working directory as established by the mcd command. If this file does not exist, the default mtools working directory is A:. Executable file SEE ALSO
Commands: mcd(1), mtools(1) mren(1)
All times are GMT -4. The time now is 09:59 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy