_Splitpath in Linux

_splitpath in Linux

dirname() and basename()

How to split path by last slash?

Use basename and dirname, that's all you need.

part1=$(dirname "$p")
part2=$(basename "$p")

Splitting a simple specific path on windows and linux

On Linux, paths are separated with a forward slash. If you want a platform-independent approach, I suggest using os.sep instead of backslash:

import os
path = '..' + os.sep + 'file.hdf'
norm_path = os.path.normpath(path)
split_path = os.path.split(norm_path)
print(split_path)

Using _splitpath function in Android NDK

_splitpath() and _MAX_FNAME are part of MSVC's runtime - they aren't standard, and are not part of GCC's library or a Linux system call.

You might be able to do what you want using dirname() and basename().

How to split path with slashes?

Use os.path.split. It is a system independent way to split paths. Note that this only splits into (head, tail). To get all the individual parts, you need to recursively split head or use str.split using os.path.sep as the separator.

Split directory path with another path

Use the below approach.

 //Windows
String s = "C:\\Test1\\Test2\\Test3\\Test4";
String[] output = s.split(("/".equals(File.separator))? File.separator : "\\\\" );
//output: [C:, Test1, Test2, Test3, Test4]

//Linux:
String linuxString = "/Test1/Test2/Test3/Test4";
String[] linuxOutput = linuxString.split(("/".equals(File.separator))? File.separator : "\\\\" );
//output: [, Test1, Test2, Test3, Test4]

Hope this will solve the issue.

function to split a filepath into path and file

void split_path_file(char** p, char** f, char *pf) {
char *slash = pf, *next;
while ((next = strpbrk(slash + 1, "\\/"))) slash = next;
if (pf != slash) slash++;
*p = strndup(pf, slash - pf);
*f = strdup(slash);
}

(If pf == slash, then there is no directory component.)

How to split a directory string in Ruby?

There's no built-in function to split a path into its component directories like there is to join them, but you can try to fake it in a cross-platform way:

directory_string.split(File::SEPARATOR)

This works with relative paths and on non-Unix platforms, but for a path that starts with "/" as the root directory, then you'll get an empty string as your first element in the array, and we'd want "/" instead.

directory_string.split(File::SEPARATOR).map {|x| x=="" ? File::SEPARATOR : x}

If you want just the directories without the root directory like you mentioned above, then you can change it to select from the first element on.

directory_string.split(File::SEPARATOR).map {|x| x=="" ? File::SEPARATOR : x}[1..-1]

Extract filename and extension in Bash

First, get file name without the path:

filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"

Alternatively, you can focus on the last '/' of the path instead of the '.' which should work even if you have unpredictable file extensions:

filename="${fullfile##*/}"

You may want to check the documentation :

  • On the web at section "3.5.3 Shell Parameter Expansion"
  • In the bash manpage at section called "Parameter Expansion"


Related Topics



Leave a reply



Submit