I believe that the main difference is that file paths use Forward Slashes instead of Backslashes, and the escape character is a Backslash instead of a Forward Slash.
But Linux also uses mount points rather than drive letters, so you will need to take that into account. Oh, and file and path Case will now matter.
Did you find and read this: https://yabb.jriver.com/interact/index.php/topic,117593.0.html
Thank you. That is a great help.
I have master templates I wrote over time so that I would never have to switch between presets when moving files of any kind. They only pertain to music and videos at the moment but I will probably edit and expand them to account for images as well. This is the one for directories:
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(IfElse(IsEqual([Media Type],Audio),ListBuild(1,\,Music,MoveArticles([Album Artist (auto)]),Delimit([Album],/ /(ListBuild(1,/,/ ,If(Math(!IsEmpty([Disc Catalog #,0])&IsEmpty([Disc #,0])),[Disc Catalog #],[Catalog #,0]),If(IsEqual([Release Type],Live),[Release Type]/ Album,[Release Type]),[Album Version,0],If(!IsEmpty([Disc #,0]),,[Media Format]),If(Math(IsEmpty([Date (override),0])&IsEqual([Date,0],[Date (release),0])|IsEqual([Date (override),0],[Date (release),0])|IsEqual([Release Type],Compilation)),,Ver Rel - FormatDate([Date (release),0],yyyy-MM-dd)))/),/(IfElse(!IsEmpty([Date (override),0]),FormatDate([Date (override),0],yyyy-MM-dd),IsEqual([Release Type],Compilation),FormatDate([Date (release),0],yyyy-MM-dd),1,FormatDate([Date,0],yyyy-MM-dd))/)/ ),Delimit([Disc #,0],Delimit([Disc Name,0],,/ -/ )/ /(ListBuild(1,/,/ ,If(Math(IsEmpty([Disc Catalog #])|IsEqual([Disc Catalog #],[Catalog #])),,[Disc Catalog #,0]),If(IsEqual([Negation Override],Yes),,Delimit([Channels],/ Channels,)),[Media Format],If(Math(IsEqual([Compilation Date Override],No)|IsEmpty([Disc Name,0])|IsEqual([Date,0],[Date (override),0])|IsEqual([Date,0],[Date (release),0])),,Orig Rel - FormatDate(yyyy-MM-dd)))/),Disc/ )),IsEqual([Media Type],Video),ListBuild(1,\,Videos,If(IsEmpty([Franchise,0]),/(Miscellaneous films/),[Franchise]),IfElse(IsEqual([Use chronicle as series in file system,0],Yes),[Chronicle],IsEqual([Franchise,0],[Series,0]),,IsEmpty([Series,0]),,1,[Series]),IfElse(IsEmpty([Season,0]),,IsEqual([Negate season],Yes),,!IsEmpty([Season Designation,0]),[Season Designation] If(!IsEmpty([Season Modifier,0]),If(Compare([Season Modifier,0],<=,9),Delimit([Season Modifier],,0),[Season Modifier]),[Season]),IsEqual([Season,0],Specials),[Season],1,Season If(!IsEmpty([Season Modifier,0]),If(Compare([Season Modifier,0],<=,9),Delimit([Season Modifier],,0),[Season Modifier]),[Season]))Delimit([Season Name,0],,/ –/ ),If(IsEmpty([Grouping,0]),,[Grouping]))),/ /|/ ,/,/ ),/ :/ ,/ –/ ),:/ ,/ –/ ),:,–),?,),/ ////,/,),////,/,/ ),//,/,/ ),",')
This is the one for file names:
Replace(Replace(Replace(Replace(Replace(IfElse(IsEqual([Media Type],Audio),Delimit([Track #],.,) [Name]Delimit(ListBuild(1,/, ,[Track Version,0],If(IsEqual([Negation Override],No),,Delimit([Channels],/ Channels,)),If(Math(IsEmpty([Artist (original),0])|IsEqual([Album Artist (auto)],[Artist (original)],8)),,Orig Artist - [Artist (original)]),If(Math(!IsEmpty([Date (override),0])&IsEqual([Date,0],[Date (override),0])|!IsEqual([Release Type,0],Compilation)&IsEmpty([Date (override),0])|IsEqual([Date,0],[Date (release),0])|IsEqual([Compilation Date Override],Yes)),,Orig Rel - FormatDate(yyyy-MM-dd))),/),/ (),IsEqual([Media Type],Video),IfElse(IsEqual([Use overall episode in file system,0],Yes),If(Compare([Overall Episode,0],<=,9),Delimit([Overall Episode],/./ ,0),Delimit([Overall Episode],/./ ,)),IsEmpty([Episode,0]),Delimit(FormatDate(yyyy-MM-dd),/)/ ,/(),1,Delimit([Episode],/./ ,))[Name]),:/ ,/ –/ ),?,),////,/,/ ),//,/,/ ),",')
I edited them to look like this based on your instruction:
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(IfElse(IsEqual([Media Type],Audio),ListBuild(1,/,Music,MoveArticles([Album Artist (auto)]),Delimit([Album],\ \(ListBuild(1,\,\ ,If(Math(!IsEmpty([Disc Catalog #,0])&IsEmpty([Disc #,0])),[Disc Catalog #],[Catalog #,0]),If(IsEqual([Release Type],Live),[Release Type]\ Album,[Release Type]),[Album Version,0],If(!IsEmpty([Disc #,0]),,[Media Format]),If(Math(IsEmpty([Date (override),0])&IsEqual([Date,0],[Date (release),0])|IsEqual([Date (override),0],[Date (release),0])|IsEqual([Release Type],Compilation)),,Ver Rel - FormatDate([Date (release),0],yyyy-MM-dd)))\),\(IfElse(!IsEmpty([Date (override),0]),FormatDate([Date (override),0],yyyy-MM-dd),IsEqual([Release Type],Compilation),FormatDate([Date (release),0],yyyy-MM-dd),1,FormatDate([Date,0],yyyy-MM-dd))\)\ ),Delimit([Disc #,0],Delimit([Disc Name,0],,\ -\ )\ \(ListBuild(1,\,\ ,If(Math(IsEmpty([Disc Catalog #])|IsEqual([Disc Catalog #],[Catalog #])),,[Disc Catalog #,0]),If(IsEqual([Negation Override],Yes),,Delimit([Channels],\ Channels,)),[Media Format],If(Math(IsEqual([Compilation Date Override],No)|IsEmpty([Disc Name,0])|IsEqual([Date,0],[Date (override),0])|IsEqual([Date,0],[Date (release),0])),,Orig Rel - FormatDate(yyyy-MM-dd)))\),Disc\ )),IsEqual([Media Type],Video),ListBuild(1,/,Videos,If(IsEmpty([Franchise,0]),\(Miscellaneous films\),[Franchise]),IfElse(IsEqual([Use chronicle as series in file system,0],Yes),[Chronicle],IsEqual([Franchise,0],[Series,0]),,IsEmpty([Series,0]),,1,[Series]),IfElse(IsEmpty([Season,0]),,IsEqual([Negate season],Yes),,!IsEmpty([Season Designation,0]),[Season Designation] If(!IsEmpty([Season Modifier,0]),If(Compare([Season Modifier,0],<=,9),Delimit([Season Modifier],,0),[Season Modifier]),[Season]),IsEqual([Season,0],Specials),[Season],1,Season If(!IsEmpty([Season Modifier,0]),If(Compare([Season Modifier,0],<=,9),Delimit([Season Modifier],,0),[Season Modifier]),[Season]))Delimit([Season Name,0],,\ –\ ),If(IsEmpty([Grouping,0]),,[Grouping]))),\ \|\ ,\,\ ),\ :\ ,\ –\ ),:\ ,\ –\ ),:,–),?,),\ \/\/,\,),\/\/,\,\ ),\/,\,\ ),",')
Replace(Replace(Replace(Replace(Replace(IfElse(IsEqual([Media Type],Audio),Delimit([Track #],.,) [Name]Delimit(ListBuild(1,\, ,[Track Version,0],If(IsEqual([Negation Override],No),,Delimit([Channels],\ Channels,)),If(Math(IsEmpty([Artist (original),0])|IsEqual([Album Artist (auto)],[Artist (original)],8)),,Orig Artist - [Artist (original)]),If(Math(!IsEmpty([Date (override),0])&IsEqual([Date,0],[Date (override),0])|!IsEqual([Release Type,0],Compilation)&IsEmpty([Date (override),0])|IsEqual([Date,0],[Date (release),0])|IsEqual([Compilation Date Override],Yes)),,Orig Rel - FormatDate(yyyy-MM-dd))),\),\ (),IsEqual([Media Type],Video),IfElse(IsEqual([Use overall episode in file system,0],Yes),If(Compare([Overall Episode,0],<=,9),Delimit([Overall Episode],\.\ ,0),Delimit([Overall Episode],\.\ ,)),IsEmpty([Episode,0]),Delimit(FormatDate(yyyy-MM-dd),\)\ ,\(),1,Delimit([Episode],\.\ ,))[Name]),:\ ,\ –\ ),?,),\/\/,\,\ ),\/,\,\ ),",')
...These are damned hard to read, I know, so the basic gist is that all instances of forward slashes as escape characters were changed to back slashes and all instances of slashes as delimiters (ListBuild(), to separate directories) or as file name elements (as inputs to Replace()) were changed to forward slashes. In theory, this should work as-is; however, plugging these in to MC's
Rename, Move, and Copy function on the Linux machine still flags syntax errors. Checking the
Convert Windows File Path Syntax option
does work as expected and it'll be handy for the initial migration; after that, I'll need working templates for adding new assets to the server.
Am I still missing something key?
Also, just so I know, do Linux file systems (ext4, in this case) ignore articles by default or do they function much like Windows' in that regard? And which characters, besides the forward slash, are illegal in file and directory naming?